Lindorm のワイドカラムエンジンは、C++、Python、Go などの非 Java の HBase API を介したアクセスをサポートしています。このトピックでは、SDK のインストール方法とアクセス操作の実行方法について説明します。
背景情報
Lindorm のワイドテーブルエンジンは、`Thrift` を介して非 Java 言語 (C++、Python、Go など) からのアクセスをサポートしています。
Lindorm のワイドテーブルエンジンは HBase `Thrift2` インターフェイス定義を使用しているため、言語固有のインターフェイスを生成するには HBase `Thrift2` 定義ファイルをダウンロードする必要があります。HBase Thrift1 定義と比較して、`Lindorm` の HBase `Thrift2` インターフェイス定義はより明確で、Java に似た API 呼び出しエクスペリエンスを提供します。現在、HBase `Thrift2` 定義ファイルは、HBase Thrift1 定義ファイルよりも包括的な機能を提供し、使いやすくなっています。
前提条件
-
`Thrift` インストールパッケージをダウンロード済みであること。
-
HBase `Thrift2` 定義ファイルをダウンロード済みであること。
-
[非 Java ApsaraDB for HBase API を使用したアクセス] のエンドポイントを取得済みであること。詳細については、「エンドポイントの表示」をご参照ください。ご利用の `Lindorm` インスタンスの [データベース接続] ページで、[LindormTable] タブを選択し、[ApsaraDB for HBase 互換エンドポイント] セクションを展開してから、VPC またはパブリックネットワークの [非 Java ApsaraDB for HBase API を使用したアクセス] セクションにある HTTP エンドポイントをコピーします。ポートは 9190 です。
LindormTable へのアクセス (Python の例)
`Thrift` インストールパッケージの使用方法については、Apache Thrift 公式ドキュメントをご参照ください。次の手順では、`Thrift` を使用して `LindormTable` にアクセスする方法について説明します。
-
HBase `Thrift2` 定義ファイルを使用して、ターゲット言語のインターフェイスファイルを生成します。次のコマンドを実行します。
thrift --gen <language> hbase.thrift説明`language` パラメーターは、ターゲット言語のジェネレーターフラグを指定します。たとえば、Python の場合は `py`、その他に `php` や `cpp` などがあります。サポートされている言語とその対応するジェネレーターフラグの完全なリストについては、Apache Thrift 公式ドキュメントをご参照ください。
たとえば、Python インターフェイスファイルを生成するには、`language` パラメーターを `py` に設定して、次のコマンドを実行します。
thrift --gen py hbase.thrift -
Lindorm ワイドテーブルエンジンにアクセスするためのクライアントを作成します。
`Lindorm` の `Thrift` サーバーは、トランスポートレイヤーに HTTP を使用します。したがって、クライアントを作成するときは、`ThttpClient` トランスポート実装を使用する必要があります。インスタンスでアクセス制御リスト (ACL) が有効になっている場合は、ユーザー名とパスワードを渡すために、`ThttpClient` オブジェクトに 2 つのカスタムヘッダーを追加する必要があります。ACL が無効になっている場合、この手順は不要です。`ThttpClient` の各言語固有の実装には、カスタムヘッダーを設定する関数が用意されています。次の Python の例は、クライアントを作成して `LindormTable` にアクセスする方法を示しています。
# -*- coding: utf-8 -*- # 次の 2 つのモジュールは、'pip install thrift' コマンドを実行して生成されます。 from thrift.protocol import TBinaryProtocol from thrift.transport import THttpClient # 次の 2 つのモジュールは、'thrift --gen py hbase.thrift' コマンドを実行して生成されます。 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()