开发者社区 问答 正文

如何使用Java Client 访问



使用JavaClient访问 HBase



访问准备


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

使用 Client 读写 HBase


  1. 引入 Maven 依赖<groupId>com.aliyun.hbase</groupId>
  2. <artifactId>alihbase-client</artifactId>
  3. <version>1.1.1</version>


这里1.1.x的其他版本都是可以使用的,HBase在第三位的小版本上的变化是保证所有的接口兼容的。 如果您的运行环境上并没有HBase的client运行需要的jar包,请在maven中添加如下的shade配置,把所有hbase-client的依赖都打到最终的jar包中。
```


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

  1. 获取集群的 ZK 连接地址
    进入 HBase 控制台集群详情页面,在网络信息部分查看ZK连接地址,可以看到类似如下的ZooKeeper的连接地址。 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


配置 ZK 地址,连接集群
将集群的zk地址替换代码中的zk地址,就可以使用如下的示例代码来进行hbase集群的访问了。 例子中展示了创建表、写入数据、读取数据 三种场景。 private static final String TABLE_NAME = "mytable";
private static final String CF_DEFAULT = "cf";
public static final byte[] QUALIFIER = "col1".getBytes();
private static final byte[] ROWKEY = "rowkey1".getBytes();
public static void main(String[] args) {
     Configuration config = HBaseConfiguration.create();
     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";
     config.set(HConstants.ZOOKEEPER_QUORUM, zkAddress);
     Connection connection = null;
     try {
         connection = ConnectionFactory.createConnection(config);
         HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf(TABLE_NAME));
         tableDescriptor.addFamily(new HColumnDescriptor(CF_DEFAULT));
         System.out.print("Creating table. ");
         Admin admin = connection.getAdmin();
         admin.createTable(tableDescriptor);
         System.out.println(" Done.");
         Table table = connection.getTable(TableName.valueOf(TABLE_NAME));
         try {
             Put put = new Put(ROWKEY);
             put.addColumn(CF_DEFAULT.getBytes(), QUALIFIER, "this is value".getBytes());
             table.put(put);
             Get get = new Get(ROWKEY);
             Result r = table.get(get);
             byte[] b = r.getValue(CF_DEFAULT.getBytes(), QUALIFIER);  // returns current version of value
             System.out.println(new String(b));
         } finally {
             if (table != null) table.close();
         }
     } catch (Exception e) {
         e.printStackTrace();
     } finally {
         if (connection != null) {
             try {
                 connection.close();
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
     }
}



代码样例


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

展开
收起
云栖大讲堂 2017-11-02 16:18:57 1923 分享 版权
0 条回答
写回答
取消 提交回答