全部產品
Search
文件中心

ApsaraDB for HBase:多語言API訪問

更新時間:Jul 06, 2024

HBase增強版通過Thrift支援多語言訪問。

前提條件

已擷取叢集串連地址查看叢集串連地址

背景資訊

  • Thrift1介面不支援許可權認證,且單個Core節點支援的串連數為1000,請注意串連數。

  • Thrift2隻支援HTTPClient訪問,並且需要添加使用者名稱和密碼。

  • Thrift的使用可以參考Apache Thrift的官方文檔

操作步驟

  1. 下載Thrift安裝包

    說明

    一些語言提供了管理依賴的方法,可以遵循這些語言的使用習慣來安裝thrift,如Python語言可以通過pip install thrift來安裝,Go語言可以直接在代碼裡import {"github.com/apache/thrift/lib/go/thrift"}

  2. 下載HBase Thrift2定義檔案

  3. 產生對應語言的介面定義檔案。

    1. 解壓步驟1已下載的thrift-0.12.0.tar.gz包,請參考thrift安裝指導

    2. 使用命令列進入已解壓的thrift-0.12.0檔案中執行如下命令產生介面定義檔案。

       thrift --gen <language> Hbase.thrift

      例如:

      thrift --gen php Hbase.thrift 
      thrift --gen cpp Hbase.thrift 
      thrift --gen py Hbase.thrift
  4. 構造用戶端訪問HBase增強版。

    說明
    • HBase增強版Thrift伺服器端的transport層使用的是HTTP,因此在構造用戶端時,需要thrift中的ThttpClient,並且在ACL開啟的情況下,需要在ThttpClient上添加兩個header來向伺服器傳輸使用者名稱和密碼進行認證。

    • Thrift在每個語言實現的ThttpClient都有加定製header的函數。

    以Python語言為例,用以下方法構造用戶端和設定串連串/使用者名稱密碼。

    # -*- coding: utf-8  -*-
    # 以下兩個模組可以通過 pip install thrift 安裝獲得
    from thrift.protocol import TBinaryProtocol
    from thrift.transport import THttpClient
    
    # 下面的模組通過 thrift --gen py hbase.thrift 來產生
    from hbase import THBaseService
    from hbase.ttypes import TColumnValue, TColumn, TTableName, TTableDescriptor, TColumnFamilyDescriptor, TNamespaceDescriptor, TGet, TPut, TScan
    
    # 串連地址
    url = "http://host:9190"
    transport = THttpClient.THttpClient(url)
    headers = {}
    # 使用者名稱
    headers["ACCESSKEYID"]="testuser";
    # 密碼
    headers["ACCESSSIGNATURE"]="password"
    transport.setCustomHeaders(headers)
    protocol = TBinaryProtocol.TBinaryProtocolAccelerated(transport)
    client = THBaseService.Client(protocol)
    transport.open()
    # 具體操作,最後close串連
    transport.close()

相關資源

所有的Demo的完整的代碼都已上傳至GitHub,包括該語言thrift定義檔案,以及所依賴的library(某些語言適用)。您可以直接下載Github上相應語言的代碼構造用戶端訪問HBase增強版。

更多語言請參見Thrift官方文檔