日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

基于HBase Java API的應用開發

本文介紹通過HBase Java API訪問Lindorm寬表引擎的具體操作和使用示例。

前提條件

  • 已安裝Java環境,要求安裝JDK 1.8及以上版本。

  • 已獲取Lindorm寬表引擎中使用HBase Java API訪問的連接地址,具體操作請參見查看連接地址

  • 將客戶端IP地址添加至云原生多模數據庫 Lindorm實例的白名單中,添加方法請參見設置白名單

  • 已完成HBase Java SDK的安裝。具體操作請參見安裝HBase Java SDK

操作步驟

  1. 通過以下兩種方式配置客戶端連接Lindorm實例。

    • 在配置文件hbase-site.xml中增加以下配置項。

      <configuration>
            <!--
          集群的連接地址,在控制臺頁面的數據庫連接界面獲得(注意公網地址和VPC內網地址)
          -->
          <property>
              <name>hbase.zookeeper.quorum</name>
              <value>ld-xxxx-proxy-hbaseue.lindormue.xxx.rds.aliyuncs.com:30020</value>
          </property>
          <!--
          設置用戶名和密碼,默認均為root,可根據實際情況調整
          -->
          <property>
              <name>hbase.client.username</name>
              <value>testuser</value>
          </property>
          <property>
              <name>hbase.client.password</name>
              <value>password</value>
          </property>
          </configuration>
    • 在Project中輸入下述代碼新建Configuration,然后根據下表描述配置相關參數。

      // 新建一個Configuration
      Configuration conf = HBaseConfiguration.create();
      // 集群的連接地址(公網地址)在控制臺頁面的數據庫連接界面獲得
      conf.set("hbase.zookeeper.quorum", "host:port");
      // xml_template.comment.hbaseue.username_password.default
      conf.set("hbase.client.username", "用戶名");
      conf.set("hbase.client.password", "密碼");

      參數

      示例值

      獲取方法

      host:port

      ld-bp17j28j2y7pm****-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30020

      Lindorm寬表引擎中使用HBase Java API訪問的連接地址,具體操作請參見查看連接地址

      用戶名

      testuser

      如果您忘記用戶名密碼,可以通過Lindorm寬表引擎的集群管理系統修改密碼,具體操作請參見修改用戶密碼

      密碼

      password

  2. 建立Lindorm客戶端和數據之間的連接。

    Connection connection = ConnectionFactory.createConnection(conf);
    說明

    在程序生命周期內只需創建一次,該連接線程安全,可以共享給所有線程使用。在程序結束后,需要將Connection對象關閉,否則會造成連接泄露。也可以采用try finally方式防止泄露。

  3. 連接建立后,可以使用HBase Java API訪問Lindorm寬表。下面提供一些簡單的Java示例。

    • DDL操作

      try (Admin admin = connection.getAdmin()){
          // 建表
          HTableDescriptor htd = new HTableDescriptor(TableName.valueOf("tablename"));
          htd.addFamily(new HColumnDescriptor(Bytes.toBytes("family")));
          // 創建一個只有一個分區的表
          // 由于單Region會限制集群并行處理能力和負載均衡效果,因此在建表時建議根據數據特點預先分區。所有的數據將存儲在同一個分區中,無法實現在多個分區間的并行處理和負載均衡。這可能導致性能瓶頸和數據熱點問題。
          admin.createTable(htd);
          // 如果需要創建多個分區的表
          // 示例如下,預分區包含兩個分區,分別為: [-∞, 10),[10, ∞), 實際使用時請根據業務情況生成分區信息
          // int numRegions = 2; // 設置需要創建的Region的數量
          // byte[][] splitKeys = new byte[numRegions-1][];
          // for (int i = 1; i < numRegions; i++) {
          //     splitKeys[i-1] = new byte[]{(byte)(i * 10)};
          // }
          // admin.createTable(tableDescriptor, splitKeys);
      
          // disable表
          admin.disableTable(TableName.valueOf("tablename"));
      
          // truncate表,清空表中數據,清空數據前需要先disable表
          admin.truncateTable(TableName.valueOf("tablename"), true);
      
          // 刪除表,刪除表之前需要先disable表
          admin.deleteTable(TableName.valueOf("tablename"));
      }
    • DML操作

      //Table為非線程安全對象,每個線程在對Table操作時,都必須從Connection中獲取相應的Table對象
      try (Table table = connection.getTable(TableName.valueOf("tablename"))) {
          // 插入數據
          Put put = new Put(Bytes.toBytes("row"));
          put.addColumn(Bytes.toBytes("family"), Bytes.toBytes("qualifier"), Bytes.toBytes("value"));
          table.put(put);
      
          // 單行讀取
          Get get = new Get(Bytes.toBytes("row"));
          Result res = table.get(get);
      
          // 刪除一行數據
          Delete delete = new Delete(Bytes.toBytes("row"));
          table.delete(delete);
      
          // scan 范圍數據
          Scan scan = new Scan(Bytes.toBytes("startRow"), Bytes.toBytes("endRow"));
          ResultScanner scanner = table.getScanner(scan);
          for (Result result : scanner) {
              // 處理查詢結果result
              // ...
          }
          scanner.close();
      }