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

使用Java API訪問增強版集群

本文介紹如何通過HBase Java API訪問云數(shù)據(jù)庫HBase增強版實例。

前提條件

  • 已安裝Java SDK,具體操作請參見升級HBase Java SDK

  • 如果應(yīng)用部署在ECS實例,您需要確保云數(shù)據(jù)庫HBase增強版實例和ECS實例滿足以下條件,以保證網(wǎng)絡(luò)的連通性。ECS實例信息的查看方法請參見查看實例信息

    • 所在地域相同,并建議所在可用區(qū)相同(以減少網(wǎng)絡(luò)延時)。

    • 網(wǎng)絡(luò)類型相同。

      說明

      專有網(wǎng)絡(luò)具有更高的安全性,建議使用專有網(wǎng)絡(luò)。如果網(wǎng)絡(luò)類型為專有網(wǎng)絡(luò),需確保使用相同的專有網(wǎng)絡(luò)ID。

  • 已將ECS實例的IP地址或客戶端IP地址添加至云數(shù)據(jù)庫HBase增強版實例的白名單中,具體操作請參見設(shè)置白名單

操作步驟

  1. 初始化HBase配置。在Project中輸入下述代碼,然后根據(jù)下表描述配置參數(shù)。

    // 新建一個Configuration
    Configuration conf = HBaseConfiguration.create();
    // 集群的Java API訪問地址,在控制臺頁面的數(shù)據(jù)庫連接界面獲得
    conf.set("hbase.zookeeper.quorum", "ld-bp150tns0sjxs****-proxy-hbaseue.hbaseue.rds.aliyuncs.com:30020");
    // xml_template.comment.hbaseue.username_password.default
    conf.set("hbase.client.username", "testuser");
    conf.set("hbase.client.password", "password");
    // 如果您直接依賴了阿里云hbase客戶端,則無需配置connection.impl參數(shù),如果您依賴了alihbase-connector,則需要配置此參數(shù)
    //conf.set("hbase.client.connection.impl", AliHBaseUEClusterConnection.class.getName());

    參數(shù)

    示例值

    獲取方法

    host:port

    ld-bp150tns0sjxs****-proxy-hbaseue.hbaseue.rds.aliyuncs.com:30020

    云數(shù)據(jù)庫HBase增強版實例的Java API訪問地址的連接地址,可以通過云數(shù)據(jù)庫HBase控制臺查看,單擊目標(biāo)實例,左側(cè)導(dǎo)航欄選擇數(shù)據(jù)庫連接,在連接信息區(qū)域查看Java API訪問地址

    用戶名

    testuser

    如果您忘記用戶名密碼,可以通過云數(shù)據(jù)庫HBase的集群管理系統(tǒng)修改密碼,具體操作請參見管理用戶

    密碼

    password

  2. 建立云數(shù)據(jù)庫HBase增強版和數(shù)據(jù)之間的連接。

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

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

  3. 建立完連接后,即可使用Java API訪問HBase增強版,以下提供簡單的Java示例。

    說明

    為了兼容HBase 1.x版本的客戶端,本示例使用HBase 1.x版本客戶端的寫法。如果您使用的是HBase 2.x版本的客戶端,在某些運行軟件中會顯示Deprecated,但不會影響正常運行。

    • DDL操作

      try (Admin admin = connection.getAdmin()){
          //建表
          HTableDescriptor htd = new HTableDescriptor(TableName.valueOf("tablename"));
          htd.addFamily(new HColumnDescriptor(Bytes.toBytes("family")));
          //創(chuàng)建一個只有一個分區(qū)的表
          //在生產(chǎn)上建表時建議根據(jù)數(shù)據(jù)特點預(yù)先分區(qū)
          admin.createTable(htd);
            
          //禁用表
          admin.disableTable(TableName.valueOf("tablename"));
            
          //清空表
          admin.truncateTable(TableName.valueOf("tablename"), true);
            
          //刪除表
          admin.deleteTable(TableName.valueOf("tablename"));
      }
    • DML操作

      //Table為非線程安全對象,每個線程在對Table操作時,都必須從Connection中獲取相應(yīng)的Table對象
      try (Table table = connection.getTable(TableName.valueOf("tablename"))) {
          //插入數(shù)據(jù)
          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);
      
          //刪除一行數(shù)據(jù)
          Delete delete = new Delete(Bytes.toBytes("row"));
          table.delete(delete);
      
          //scan范圍數(shù)據(jù)
          Scan scan = new Scan(Bytes.toBytes("startRow"), Bytes.toBytes("endRow"));
          ResultScanner scanner = table.getScanner(scan);
          for (Result result : scanner) {
              //處理查詢結(jié)果result
              // ...
          }
          scanner.close();
      }