hbase java客户端_HBase Java客户端编程

本文以Hbase-0.92.0为例,介绍如何在Windows系统,Eclipse IDE集成环境下,使用Java语言,进行HBase客户端编程,包含建立表、删除表、插入记录、删除记录、各种方式下的查询操作等。

1. 准备工作

1、下载后安装jdk包;

2、下载eclipse,解压到本地;

3、下载HBase包,解压安装包到本地(这里使用的是 Hbase-0.92.0)。

2. 搭建开发环境

1、运行Eclipse,创建一个新的Java工程“HBaseClient”,右键项目根目录,选择 “Properties”->“Java Build Path”->“Library”->“Add External JARs”,将HBase解压后根目录下的hbase-0.92.0.jar、hbase-0.92.0-tests.jar和lib子目录下所有jar 包添加到本工程的Classpath下。

2、按照步骤1中的操作,将自己所连接的HBase的配置文件hbase-site.xml添加到本工程的Classpath中,如下所示为配置文件的一个示例:

hbase.rootdir

hdfs://Hadoop-1:9000/hbase

hbase.cluster.distributed

true

hbase.zookeeper.quorum

hadoop-1,hadoop-2,hadoop-3,hadoop-4

zookeeper.session.timeout

60000

hbase.master

hadoop-1:60000

hbase.zookeeper.property.clientPort

21818

3、下面可以在Eclipse环境下进行HBase编程了。

3. HBase基本操作代码示例

importjava.io.IOException;

importjava.util.ArrayList;

importjava.util.List;

importorg.apache.hadoop.conf.Configuration;

importorg.apache.hadoop.hbase.HBaseConfiguration;

importorg.apache.hadoop.hbase.HColumnDescriptor;

importorg.apache.hadoop.hbase.HTableDescriptor;

importorg.apache.hadoop.hbase.KeyValue;

importorg.apache.hadoop.hbase.MasterNotRunningException;

importorg.apache.hadoop.hbase.ZooKeeperConnectionException;

importorg.apache.hadoop.hbase.client.Delete;

importorg.apache.hadoop.hbase.client.Get;

importorg.apache.hadoop.hbase.client.HBaseAdmin;

importorg.apache.hadoop.hbase.client.HTable;

importorg.apache.hadoop.hbase.client.Result;

importorg.apache.hadoop.hbase.client.ResultScanner;

importorg.apache.hadoop.hbase.client.Scan;

importorg.apache.hadoop.hbase.client.Put;

importorg.apache.hadoop.hbase.util.Bytes;

publicclassHBaseTest {

privatestaticConfiguration conf =null;

/**

* 初始化配置

*/

static{

conf = HBaseConfiguration.create();

}

/**

* 创建一张表

*/

publicstaticvoidcreatTable(String tableName, String[] familys)throwsException {

HBaseAdmin admin =newHBaseAdmin(conf);

if(admin.tableExists(tableName)) {

System.out.println("table already exists!");

}else{

HTableDescriptor tableDesc =newHTableDescriptor(tableName);

for(inti=0; i

tableDesc.addFamily(newHColumnDescriptor(familys[i]));

}

admin.createTable(tableDesc);

System.out.println("create table "+ tableName +" ok.");

}

}

/**

* 删除表

*/

publicstaticvoiddeleteTable(String tableName)throwsException {

try{

HBaseAdmin admin =newHBaseAdmin(conf);

admin.disableTable(tableName);

admin.deleteTable(tableName);

System.out.println("delete table "+ tableName +" ok.");

}catch(MasterNotRunningException e) {

e.printStackTrace();

}catch(ZooKeeperConnectionException e) {

e.printStackTrace();

}

}

/**

* 插入一行记录

*/

publicstaticvoidaddRecord (String tableName, String rowKey, String family, String qualifier, String value)

throwsException{

try{

HTable table =newHTable(conf, tableName);

Put put =newPut(Bytes.toBytes(rowKey));

put.add(Bytes.toBytes(family),Bytes.toBytes(qualifier),Bytes.toBytes(value));

table.put(put);

System.out.println("insert recored "+ rowKey +" to table "+ tableName +" ok.");

}catch(IOException e) {

e.printStackTrace();

}

}

/**

* 删除一行记录

*/

publicstaticvoiddelRecord (String tableName, String rowKey)throwsIOException{

HTable table =newHTable(conf, tableName);

List list =newArrayList();

Delete del =newDelete(rowKey.getBytes());

list.add(del);

table.delete(list);

System.out.println("del recored "+ rowKey +" ok.");

}

/**

* 查找一行记录

*/

publicstaticvoidgetOneRecord (String tableName, String rowKey)throwsIOException{

HTable table =newHTable(conf, tableName);

Get get =newGet(rowKey.getBytes());

Result rs = table.get(get);

for(KeyValue kv : rs.raw()){

System.out.print(newString(kv.getRow()) +" ");

System.out.print(newString(kv.getFamily()) +":");

System.out.print(newString(kv.getQualifier()) +" ");

System.out.print(kv.getTimestamp() +" ");

System.out.println(newString(kv.getValue()));

}

}

/**

* 显示所有数据

*/

publicstaticvoidgetAllRecord (String tableName) {

try{

HTable table =newHTable(conf, tableName);

Scan s =newScan();

ResultScanner ss = table.getScanner(s);

for(Result r:ss){

for(KeyValue kv : r.raw()){

System.out.print(newString(kv.getRow()) +" ");

System.out.print(newString(kv.getFamily()) +":");

System.out.print(newString(kv.getQualifier()) +" ");

System.out.print(kv.getTimestamp() +" ");

System.out.println(newString(kv.getValue()));

}

}

}catch(IOException e){

e.printStackTrace();

}

}

publicstaticvoidmain (String [] agrs) {

try{

String tablename ="scores";

String[] familys = {"grade","course"};

HBaseTest.creatTable(tablename, familys);

//add record zkb

HBaseTest.addRecord(tablename,"zkb","grade","","5");

HBaseTest.addRecord(tablename,"zkb","course","","90");

HBaseTest.addRecord(tablename,"zkb","course","math","97");

HBaseTest.addRecord(tablename,"zkb","course","art","87");

//add record  baoniu

HBaseTest.addRecord(tablename,"baoniu","grade","","4");

HBaseTest.addRecord(tablename,"baoniu","course","math","89");

System.out.println("===========get one record========");

HBaseTest.getOneRecord(tablename,"zkb");

System.out.println("===========show all record========");

HBaseTest.getAllRecord(tablename);

System.out.println("===========del one record========");

HBaseTest.delRecord(tablename,"baoniu");

HBaseTest.getAllRecord(tablename);

System.out.println("===========show all record========");

HBaseTest.getAllRecord(tablename);

}catch(Exception e) {

e.printStackTrace();

}

}

}0b1331709591d260c1c78e86d0c51c18.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值