hbase java 编程,(转载)Hbase -- Java客户端编程

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

1. 准备工作

1、下载后安装jdk包(这里使用的是jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008);

2、下载eclipse,解压到本地(这里使用的是eclipse-java-helios-SR2-win32);

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

2. 搭建开发环境

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

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

hbase.rootdir

hdfs://hostname:9000/hbase

hbase.cluster.distributed

true

hbase.zookeeper.quorum

*.*.*.*, *.*.*.*, *.*.*.*

hbase.defaults.for.version

0.90.2

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

3. HBase基本操作代码示例

3.1 初始化配置

privatestatic Configuration conf =null;

/**

* 初始化配置

*/

static {

conf = HBaseConfiguration.create();

}

3.2 创建表

/**

* 创建表操作

* @throws IOException

*/

publicvoid createTable(String tablename, String[] cfs) throws IOException {

HBaseAdmin admin =new HBaseAdmin(conf);

if (admin.tableExists(tablename)) {

System.out.println("表已经存在!");

}

else {

HTableDescriptor tableDesc =new HTableDescriptor(tablename);

for (int i =0; i < cfs.length; i++) {

tableDesc.addFamily(new HColumnDescriptor(cfs[i]));

}

admin.createTable(tableDesc);

System.out.println("表创建成功!");

}

}

3.3 删除表

/**

* 删除表操作

* @param tablename

* @throws IOException

*/

publicvoid deleteTable(String tablename) throws IOException {

try {

HBaseAdmin admin =new HBaseAdmin(conf);

admin.disableTable(tablename);

admin.deleteTable(tablename);

System.out.println("表删除成功!");

} catch (MasterNotRunningException e) {

e.printStackTrace();

} catch (ZooKeeperConnectionException e) {

e.printStackTrace();

}

}

3.4 插入一行记录

/**

* 插入一行记录

* @param tablename

* @param cfs

*/

publicvoid writeRow(String tablename, String[] cfs) {

try {

HTable table =new HTable(conf, tablename);

Put put =new Put(Bytes.toBytes("rows1"));

for (int j =0; j < cfs.length; j++) {

put.add(Bytes.toBytes(cfs[j]),

Bytes.toBytes(String.valueOf(1)),

Bytes.toBytes("value_1"));

table.put(put);

}

} catch (IOException e) {

e.printStackTrace();

}

}

3.5 删除一行记录

/**

* 删除一行记录

* @param tablename

* @param rowkey

* @throws IOException

*/

publicvoid deleteRow(String tablename, String rowkey) throws IOException {

HTable table =new HTable(conf, tablename);

List list =new ArrayList();

Delete d1 =new Delete(rowkey.getBytes());

list.add(d1);

table.delete(list);

System.out.println("删除行成功!");

}

3.6 查找一行记录

/**

* 查找一行记录

* @param tablename

* @param rowkey

*/

publicstaticvoid selectRow(String tablename, String rowKey)

throws IOException {

HTable table =new HTable(conf, tablename);

Get g =new Get(rowKey.getBytes());

Result rs = table.get(g);

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

System.out.print(new String(kv.getRow()) +"");

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

System.out.print(new String(kv.getQualifier()) +"");

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

System.out.println(new String(kv.getValue()));

}

}

3.7 查询表中所有行

/**

* 查询表中所有行

* @param tablename

*/

publicvoid scaner(String tablename) {

try {

HTable table =new HTable(conf, tablename);

Scan s =new Scan();

ResultScanner rs = table.getScanner(s);

for (Result r : rs) {

KeyValue[] kv = r.raw();

for (int i =0; i < kv.length; i++) {

System.out.print(new String(kv[i].getRow()) +"");

System.out.print(new String(kv[i].getFamily()) +":");

System.out.print(new String(kv[i].getQualifier()) +"");

System.out.print(kv[i].getTimestamp() +"");

System.out.println(new String(kv[i].getValue()));

}

}

} catch (IOException e) {

e.printStackTrace();

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值