Java调用大数据接口,学习Hadoop第二十八课(java通过调用接口来操作HBase)

上节课我们一起简单学习了HBase的一些理论,这节课我们一起学习用java调HBase的接口来操作HBase。

我们首先建一个工程,这里我们还用原始的新建一个lib包。然后我们把下载的hbase-0.96.2-hadoop2-bin.tar.gz包解压,解压后有个lib包,我们把lib包下的jar包都拷贝到工程的lib目录下并Build path到工程当中。下图当中我只是截取了jar包的一部分。

ff37c57f4a7f99d105253b294efdc103.png

下面我把代码粘贴出来。

package com.myhbase;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;

import org.apache.hadoop.hbase.HColumnDescriptor;

import org.apache.hadoop.hbase.HTableDescriptor;

import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.hbase.client.HBaseAdmin;

public class HBaseDemo {

public static void main(String[] args) throws Exception {

//首先得到HBase的配置对象

Configuration conf=HBaseConfiguration.create();

//配置Client连向谁,我们的Client连向的是zookeeper,因此我们配置的是zookeeper的信息,这些信息存在hbase-site.xml当中。

//我们会觉得不可思议,建HBase表,竟然Client连的既不是HMaster也不是HRegionServer,而是zookeeper,其实Client连zookeeper

//zookeeper只是负责协调,真正执行建表语句的还是HMaster,只不过zookeeper帮我们去找到HMaster并告诉它应该做什么了而已。

conf.set("hbase.zookeeper.quorum","itcast04:2181,itcast05:2181,itcast06:2181");

//要创建HBase表,我们需要HBaseAdmin对象

HBaseAdmin admin=new HBaseAdmin(conf);

//admin的create方法接收的参数是一个HTableDescriptor对象,因此我们需要先获取HTableDescriptor,

//我们给表起名为peoples(人类)

HTableDescriptor htd= new HTableDescriptor(TableName.valueOf("peoples"));

//我们还需要给表描述对象添加一些属性,我们在建表的时候会创建列族,首先我们创建一个名叫"info"的列族。

HColumnDescriptor hcd_info=new HColumnDescriptor("info");

//每个列族可以指定最大的版本存储数量,这里我们给列族"info"设置版本最大存储数量是3

hcd_info.setMaxVersions(3);

//接着我们再创建第二个列族

HColumnDescriptor hcd_data=new HColumnDescriptor("data");

//创建完两个列族,我们需要把列族添加到表的描述对象当中

htd.addFamily(hcd_info);

htd.addFamily(hcd_data);

//这时我们开始创建表,前面已经设置了一些属性值,因此生成的表便会带一些属性的。

admin.createTable(htd);

//用完admin对象要记得关闭

admin.close();

}

}

我们执行上面的代码,在Console控制台我们会看到如下所示的信息,其实这不算问题,这只是Windows和Linux平台不同而报的异常,程序捕捉到了该异常没有抛出来,只是打印出来了而已。这不影响我们的执行结果。

2016-11-03 00:49:34,201

ERROR [main] util.Shell (Shell.java:getWinUtilsPath(303)) - Failed to locate the winutils binary in the hadoop binary path

java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)

at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)

at org.apache.hadoop.util.Shell.(Shell.java:293)

at org.apache.hadoop.util.StringUtils.(StringUtils.java:76)

at org.apache.hadoop.conf.Configuration.getStrings(Configuration.java:1514)

at org.apache.hadoop.hbase.zookeeper.ZKConfig.makeZKProps(ZKConfig.java:113)

at org.apache.hadoop.hbase.zookeeper.ZKConfig.getZKQuorumServersString(ZKConfig.java:265)

at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.(ZooKeeperWatcher.java:159)

at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.(ZooKeeperWatcher.java:134)

at org.apache.hadoop.hbase.client.ZooKeeperKeepAliveConnection.(ZooKeeperKeepAliveConnection.java:43)

at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getKeepAliveZooKeeperWatcher(HConnectionManager.java:1710)

at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:82)

at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:806)

at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.(HConnectionManager.java:633)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:526)

at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:387)

at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:366)

at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:247)

at org.apache.hadoop.hbase.client.HBaseAdmin.(HBaseAdmin.java:183)

at com.myhbase.HBaseDemo.main(HBaseDemo.java:21)

我们到管理界面来看看是不是有我们刚才生成的表,我输入的地址是169.254.254.10:60010来访问其中169.254.254.10是我的itcast01的IP地址,你输入你itcast01的IP地址。60010是HBase的默认端口。如下图所示,可以看到,Tables当中已经有我们刚才生成的peoples表了,而且列族的名字,版本数量都一致,说明我们通过java来建表的操作成功了!!

05b4e9d0f0babb7e697df6e9a22190ef.png

这节课我们就一起学习到这里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值