全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网

使用Java Client 访问

更新时间:2017-11-20 11:52:48

使用JavaClient访问 HBase

访问准备

因为HBase只提供了内网的访问,所以如果要访问HBase,需要在相同的Region内准备一台ECS。如果已经有ECS了那么请继续下一步。如果还没有,您可以在ECS的购买页面上购买一台按量的ECS进行测试。

设置请参考这里

使用 Client 读写 HBase

  1. 引入 Maven 依赖

    1. <groupId>com.aliyun.hbase</groupId>
    2. <artifactId>alihbase-client</artifactId>
    3. <version>1.1.2</version>

    这里1.1.x的其他版本都是可以使用的,HBase在第三位的小版本上的变化是保证所有的接口兼容的。

  1. 如果您的运行环境上并没有HBaseclient运行需要的jar包,请在maven中添加如下的shade配置,把所有hbase-client的依赖都打到最终的jar包中。
  2. ```

org.apache.maven.plugins maven-shade-plugin 3.0.0 package shade

  1. ```
  1. 获取集群的 ZK 连接地址

    进入 HBase 控制台集群详情页面,在网络信息部分查看ZK连接地址,可以看到类似如下的ZooKeeper的连接地址。

    1. hb-bp1f5xxxx48a0r17i-001.hbase.rds.aliyuncs.com:2181
    2. hb-bp1f5xxxx48a0r17i-002.hbase.rds.aliyuncs.com:2181
    3. hb-bp1f5xxxx48a0r17i-003.hbase.rds.aliyuncs.com:2181
  2. 配置 ZK 地址,连接集群

    将集群的zk地址替换代码中的zk地址,就可以使用如下的示例代码来进行hbase集群的访问了。 例子中展示了创建表、写入数据、读取数据 三种场景。

    1. private static final String TABLE_NAME = "mytable";
    2. private static final String CF_DEFAULT = "cf";
    3. public static final byte[] QUALIFIER = "col1".getBytes();
    4. private static final byte[] ROWKEY = "rowkey1".getBytes();
    5. public static void main(String[] args) {
    6. Configuration config = HBaseConfiguration.create();
    7. String zkAddress = "hb-bp1f5xxxx48a0r17i-001.hbase.rds.aliyuncs.com:2181,hb-bp1f5xxxx48a0r17i-002.hbase.rds.aliyuncs.com:2181,hb-bp1f5xxxx48a0r17i-003.hbase.rds.aliyuncs.com:2181";
    8. config.set(HConstants.ZOOKEEPER_QUORUM, zkAddress);
    9. Connection connection = null;
    10. try {
    11. connection = ConnectionFactory.createConnection(config);
    12. HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf(TABLE_NAME));
    13. tableDescriptor.addFamily(new HColumnDescriptor(CF_DEFAULT));
    14. System.out.print("Creating table. ");
    15. Admin admin = connection.getAdmin();
    16. admin.createTable(tableDescriptor);
    17. System.out.println(" Done.");
    18. Table table = connection.getTable(TableName.valueOf(TABLE_NAME));
    19. try {
    20. Put put = new Put(ROWKEY);
    21. put.addColumn(CF_DEFAULT.getBytes(), QUALIFIER, "this is value".getBytes());
    22. table.put(put);
    23. Get get = new Get(ROWKEY);
    24. Result r = table.get(get);
    25. byte[] b = r.getValue(CF_DEFAULT.getBytes(), QUALIFIER); // returns current version of value
    26. System.out.println(new String(b));
    27. } finally {
    28. if (table != null) table.close();
    29. }
    30. } catch (Exception e) {
    31. e.printStackTrace();
    32. } finally {
    33. if (connection != null) {
    34. try {
    35. connection.close();
    36. } catch (IOException e) {
    37. e.printStackTrace();
    38. }
    39. }
    40. }
    41. }

代码样例

您也可以在这里下载我们提供的Java代码工程,替换其中的ZooKeeper变量部分后使用

HBase访问Demo下载

本文导读目录