对hbase进行增删改查的操作实例

代码实例
定义连接需要的静态常量
private static final String TABLE_NAME = “Student”;
private static final String[] FAMILYS = { “name”, “profile”, “score” };
private static final String[] ROW_KEYS = { “11”, “20”, “32” };

//创建HBaseConfiguration对象
Configuration conf = HBaseConfiguration.create();
//创建zookeeper的ip
conf.set(“hbase.zookeeper.quorum”, “localhost”);
// 创建连接对象
Connection conn = ConnectionFactory.createConnection(conf);
// 调用创建表格的方法
// createTable(conn);
String[][] columns1 = { { “name”, “”, “John” }, { “profile”, “age”, “20” }, { “profile”, “class”, “class1” },
{ “score”, “math”, “100” }, { “score”, “lang”, “95” } };
String[][] columns2 = { { “name”, “”, “Marry” }, { “name”, “alias”, “MY” }, { “profile”, “gender”, “female” },
{ “profile”, “class”, “class2” }, { “score”, “math”, “93” }, { “score”, “eng”, “90” } };
String[][] columns3 = { { “name”, “”, “Peter” }, { “profile”, “class”, “class3” }, { “score”, “math”, “87” },
{ “score”, “lang”, “85” } };
// 插入数据
// insert(conn,ROW_KEYS[0],columns1);
// insert(conn,ROW_KEYS[1],columns2);
// insert(conn,ROW_KEYS[2],columns3);
getDataByRK(conn, “11”);

//创建表格的方法
public static void createTable(Connection conn) throws IOException {
// 通过连接对象获取表格管理对象Admin
Admin admin = conn.getAdmin();
// 创建一个表格的描述对象
TableName tableName = TableName.valueOf(TABLE_NAME);
HTableDescriptor tDesc = new HTableDescriptor(tableName);
// 创建列描述对象
HColumnDescriptor columnDesc1 = new HColumnDescriptor(Bytes.toBytes(FAMILYS[0]));
HColumnDescriptor columnDesc2 = new HColumnDescriptor(Bytes.toBytes(FAMILYS[1]));
HColumnDescriptor columnDesc3 = new HColumnDescriptor(Bytes.toBytes(FAMILYS[2]));
// 将列描述对象添加到表格描述对象中
tDesc.addFamily(columnDesc1);
tDesc.addFamily(columnDesc2);
tDesc.addFamily(columnDesc3);
// 调用Admin对象的创建表格的方法,创建表格
admin.createTable(tDesc);
// 关闭admin对象
admin.close();
}

向表格中插入数据
ublic static void insert(Connection conn, String rowKey, String[][] data) throws IOException {
// 通过连接对象获取Table对象
Table table = conn.getTable(TableName.valueOf(TABLE_NAME));
// 创建Put对象
Put put = new Put(Bytes.toBytes(rowKey));
// 通过循环向Put对象中添加数据
for (String[] array : data) {
// put.add(family, qualifier, value)
// family->列族,qualifier->限定符(子列),value->单元格的值
put.addColumn(Bytes.toBytes(array[0]), Bytes.toBytes(array[1]), Bytes.toBytes(array[2]));
}
// 向表格中添加数据
table.put(put);
// 关闭表格
table.close();

//检查数据
public static void getDataByRK(Connection conn, String rowKey) throws IOException {
// 通过连接对象获取Table对象
Table table =conn.getTable(TableName.valueOf(TABLE_NAME));
// 创建Get对象
Get get = new Get(Bytes.toBytes(rowKey));
// 通过Table对象获取查询结果对象
Result result = table.get(get);
// 通过循环获取每一个列族
for (String family : FAMILYS) {
    System.out.println("family=" + family);
    Map<byte[], byte[]> map=result.getFamilyMap(Bytes.toBytes(family));
    for (byte[] qualifier : map.keySet()) {
        String qualifierStr = new String(qualifier);
        String value = new String(map.get(qualifier));
        System.out.println("qualifier=" + qualifierStr + ",value=" + value);
        }
    }
    // 关闭表格
    table.close();
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值