C++、Python、GoなどのJava以外の言語用のApsaraDB for HBase APIを使用して、ワイドテーブルエンジン LindormTable に接続できます。このトピックでは、Java以外の言語用のApsaraDB for HBase SDKをインストールして使用する方法について説明します。
背景情報
LindormTableはThriftを使用して、C++、Python、GoなどのJava以外の言語用のApsaraDB for HBase SDKを使用してLindormTableに接続できるようにします。
LindormTableは、ApsaraDB for HBaseのThrift2インターフェース定義を使用します。対応する言語のインターフェース定義言語(IDL)ファイルを生成するには、ApsaraDB for HBaseのThrift2定義ファイルをダウンロードする必要があります。 LindormTableで使用されるApsaraDB for HBaseのThrift2インターフェース定義は、ApsaraDB for HBaseのThrift1インターフェース定義よりも明確です。 JavaのAPI操作を呼び出すのと同様の方法で、Java以外の言語のAPI操作を呼び出すことができます。 ApsaraDB for HBaseのThrift2定義ファイルは、ApsaraDB for HBaseのThrift1定義ファイルよりも多くの機能と使いやすい機能を提供します。
前提条件
- Thriftインストールパッケージがダウンロードされていること。
- ApsaraDB for HBaseのThrift2定義ファイルがダウンロードされていること。
- ワイドテーブルエンジンのタブにある[hbase Java以外のapiを使用してアクセス]に対応するエンドポイントを取得していること。詳細については、「エンドポイントの表示」をご参照ください。
PythonなどのJava以外の言語用のApsaraDB for HBase SDKを使用してLindormTableに接続する
Thriftインストールパッケージを使用してThriftをインストールする方法については、Apache Thrift公式ドキュメントを参照してください。Thriftを使用してLindormTableに接続するには、次の手順を実行します。
- 次のステートメントを実行して、ApsaraDB for HBaseのThrift2定義ファイルを使用して、対応する言語のIDLファイルを生成します。
thrift --gen <language> hbase.thrift次のコードは、ステートメントの例を示しています。説明languageパラメーターは、使用するプログラミング言語を指定します。このパラメーターは、python、php、cpp、pyなどの値に設定できます。thrift --gen python hbase.thrift - LindormTableに接続するためのクライアントを作成します。LindormのThriftサーバーは、トランスポート層でHTTPを使用します。クライアントを作成するときは、ThriftのThttpClientが必要です。クライアントの作成方法は、言語によって異なります。アクセス制御リスト(ACL)が有効になっている場合は、認証のためにThttpClientの2つのヘッダーにユーザー名とパスワードを指定します。 ACLが無効になっている場合は、ユーザー名とパスワードは必要ありません。 Thriftでは、言語の関数を呼び出して、ThttpClientでカスタムヘッダーを指定できます。次の例では、Pythonを使用しています。次のステートメントを実行して、クライアントを作成し、LindormTableに接続できます。
# -*- coding: utf-8 -*- # pip install thrift コマンドを実行して、次の 2 つのモジュールを生成できます。 from thrift.protocol import TBinaryProtocol from thrift.transport import THttpClient # thrift --gen py hbase.thrift コマンドを実行して、次の 2 つのモジュールを生成できます。 from hbase import THBaseService from hbase.ttypes import TColumnValue, TColumn, TTableName, TTableDescriptor, TColumnFamilyDescriptor, TNamespaceDescriptor, TGet, TPut, TScan # LindormTable のエンドポイントを指定します。 url = "http://ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com: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() # 接続を閉じます。 transport.close()