我们在日常工作中,用eclipse来编写具体的程序,来操作HBase数据库,首先在eclispe中配置HBase环境
新建项目--》导入HBase中的jar包
下面直接贴代码
package com.hbase;
import java.io.IOException;
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.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
public class HBaseTest {
public static final String TABLE_NAME = "table1";
public static final String FAMILY_NAME = "family1";
public static final String ROW_KEY = "rowkey1";
public static void main(String[] args) throws Exception {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.rootdir", "hdfs://master.dragon.org:9000/hbase");
// 使用eclipse,必须使用这个配置定位
conf.set("hbase.zookeeper.quorum", "master.dragon.org");
// HBaseAdmin用于创建表和删除表
HBaseAdmin admin = new HBaseAdmin(conf);
createTable(admin);//创建表
deleteTable(admin);//删除表
// HTable适用于添加记录,查看记录
HTable hTable = new HTable(conf, TABLE_NAME);
addRecord(hTable);//添加记录
getRecord(hTable);//得到记录
scannerTable(hTable);//全表扫描
hTable.close();
}
private static void scannerTable(HTable hTable) throws IOException {
Scan scan = new Scan();
ResultScanner scanner = hTable.getScanner(scan);
for (Result result : scanner) {
byte[] value = result.getValue(FAMILY_NAME.getBytes(), "info".getBytes());
System.out.println(result + "\t" + new String(value));
}
}
private static void getRecord(HTable hTable) throws IOException {
Get get = new Get(ROW_KEY.getBytes());
Result result = hTable.get(get);
byte[] value = result.getValue(FAMILY_NAME.getBytes(), "info".getBytes());
System.out.println(result + "\t" + new String(value));
}
private static void addRecord(HTable hTable) throws IOException {
Put put = new Put(ROW_KEY.getBytes());
put.add(FAMILY_NAME.getBytes(), "info".getBytes(), "50".getBytes());
hTable.put(put);
}
private static void deleteTable(HBaseAdmin admin) throws IOException {
admin.disableTable(TABLE_NAME);
admin.deleteTable(TABLE_NAME);
}
private static void createTable(HBaseAdmin admin) throws IOException {
if (!admin.tableExists(TABLE_NAME)) {
HTableDescriptor desc = new HTableDescriptor(TABLE_NAME);
HColumnDescriptor family = new HColumnDescriptor(FAMILY_NAME);
desc.addFamily(family);
admin.createTable(desc);
}
}
}