HBase Java API 代码 - 图1

1.获取链接

  1. public static final String ZK_CONNECT_KEY = "hbase.zookeeper.quorum";
  2. public static final String ZK_CONNECT_VALUE = "reiser001:2181,reiser002:2181,reiser003:2181";
  3. config = HBaseConfiguration.create();
  4. config.set(HBase_Constants.ZK_CONNECT_KEY, HBase_Constants.ZK_CONNECT_VALUE);
  5. connection = ConnectionFactory.createConnection(config);
  6. admin = connection.getAdmin();

2.创建表

  1. @Override
  2. public void createTable(String tableName, String[] family) throws Exception {
  3. TableName name = TableName.valueOf(tableName);
  4. if (admin.tableExists(name)) {
  5. System.out.println("表已经存在");
  6. } else {
  7. // TODO 注释:构建列蔟对象
  8. List<ColumnFamilyDescriptor> list = new ArrayList<>();
  9. for (String s : family) {
  10. ColumnFamilyDescriptor cf = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(s))
  11. .setDataBlockEncoding(DataBlockEncoding.PREFIX)
  12. .setBloomFilterType(BloomType.ROW)
  13. .build();
  14. list.add(cf);
  15. }
  16. // TODO 注释:构建表对象
  17. TableDescriptor table = TableDescriptorBuilder.newBuilder(name)
  18. .setColumnFamilies(list)
  19. .build();
  20. admin.createTable(table);
  21. if (admin.tableExists(name)) {
  22. System.out.println("表创建成功");
  23. } else {
  24. System.out.println("表创建失败");
  25. }
  26. }
  27. }

3.插入数据

  1. @Override
  2. public void putData(String tableName, String rowKey, String familyName, String columnName, String value, long timestamp) throws Exception {
  3. Put put = new Put(Bytes.toBytes(rowKey));
  4. Table table = connection.getTable(TableName.valueOf(tableName));
  5. put.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName), timestamp, Bytes.toBytes(value));
  6. table.put(put);
  7. }

4.删除数据

  1. @Override
  2. public void deleteColumn(String tableName, String rowKey, String falilyName, String columnName) throws Exception {
  3. Table table = connection.getTable(TableName.valueOf(tableName));
  4. Delete deleteColumn = new Delete(Bytes.toBytes(rowKey));
  5. deleteColumn.addColumn(Bytes.toBytes(falilyName), Bytes.toBytes(columnName));
  6. table.delete(deleteColumn);
  7. }

5.查询数据 - 有 rowkey

  1. @Override
  2. public Result getResult(String tableName, String rowKey, String familyName, String columnName) throws Exception {
  3. Table table = connection.getTable(TableName.valueOf(tableName));
  4. Get get = new Get(Bytes.toBytes(rowKey));
  5. get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
  6. return table.get(get);
  7. }

6.查询数据 - 无 rowkey

  1. @Override
  2. public ResultScanner getResultScann(String tableName, String columnFamily, String qualifier) throws Exception {
  3. Scan scan = new Scan();
  4. scan.addColumn(Bytes.toBytes(columnFamily), Bytes.toBytes(qualifier));
  5. Table table = connection.getTable(TableName.valueOf(tableName));
  6. return table.getScanner(scan);
  7. }