このトピックでは、ApsaraDB for HBase の Java API を使用して ApsaraDB for HBase Performance-enhanced Edition インスタンスにアクセスする方法について説明します。
前提条件
Java SDK がインストールされていること。 詳細については、「HBase Java SDK のアップグレード」をご参照ください。
アプリケーションが Elastic Compute Service (ECS) インスタンスにデプロイされている場合は、ApsaraDB for HBase Performance-enhanced Edition インスタンスと ECS インスタンスがネットワーク接続に関して次の条件を満たしていることを確認してください。 ECS インスタンスの詳細の表示方法については、「インスタンス情報の表示」をご参照ください。
インスタンスが同じリージョンにあること。 ネットワーク遅延を低減するため、同じアベイラビリティゾーンに配置することを推奨します。
インスタンスが同じネットワークタイプを使用していること。
説明VPC はより高いセキュリティを提供します。 VPC の使用を推奨します。 ネットワークタイプが VPC の場合は、両方のインスタンスが同じ VPC 内にあることを確認してください。
ECS インスタンスまたはクライアントの IP アドレスが、ApsaraDB for HBase Performance-enhanced Edition インスタンスのホワイトリストに追加されていること。 詳細については、「ホワイトリストの設定」をご参照ください。
操作手順
HBase の構成を初期化します。 プロジェクトで次のコードを入力し、以下の表の説明に従ってパラメーターを設定します。
// Configuration オブジェクトを作成します。 Configuration conf = HBaseConfiguration.create(); // クラスターの Java API エンドポイント。 エンドポイントは、コンソールの [データベース接続] ページで取得できます。 conf.set("hbase.zookeeper.quorum", "ld-bp150tns0sjxs****-proxy-hbaseue.hbaseue.rds.aliyuncs.com:30020"); // ユーザー名とパスワードを設定します。 conf.set("hbase.client.username", "testuser"); conf.set("hbase.client.password", "password"); // Alibaba Cloud HBase クライアントに直接依存している場合、connection.impl パラメーターを設定する必要はありません。 alihbase-connector に依存している場合は、このパラメーターを設定する必要があります。 //conf.set("hbase.client.connection.impl", AliHBaseUEClusterConnection.class.getName());パラメーター
値
説明
host:port
ld-bp150tns0sjxs****-proxy-hbaseue.hbaseue.rds.aliyuncs.com:30020
ご利用の ApsaraDB for HBase Performance-enhanced Edition インスタンスの Java API エンドポイントの接続文字列です。 この値を取得するには、ApsaraDB for HBase コンソールに移動し、ターゲットインスタンスの ID をクリックします。 左側のナビゲーションウィンドウで、Database Connection をクリックします。 Connection Information セクションで、[Java API エンドポイント] を見つけます。
username
testuser
ユーザー名またはパスワードを忘れた場合は、ApsaraDB for HBase クラスター管理システムでリセットできます。 詳細については、「ユーザーの管理」をご参照ください。
password
password
ApsaraDB for HBase Performance-enhanced Edition インスタンスへの接続を作成します。
Connection connection = ConnectionFactory.createConnection(conf);説明接続は、アプリケーションライフサイクル中に一度だけ作成してください。 接続はスレッドセーフであり、すべてのスレッドで共有できます。 接続リークを防ぐため、プログラムの終了後に Connection オブジェクトを閉じてください。 try-with-resources 文または
try...finallyブロックを使用して、リークを防ぐこともできます。接続が確立されると、Java API を使用して ApsaraDB for HBase Performance-enhanced Edition インスタンスにアクセスできます。 以下に簡単な Java の例を示します。
説明HBase 1.x クライアントとの互換性を確保するため、この例では HBase 1.x クライアントの構文を使用しています。 HBase 2.x クライアントを使用する場合、一部の IDE で
Deprecated警告が表示されることがありますが、これは操作に影響しません。DDL ステートメント
try (Admin admin = connection.getAdmin()){ // テーブルを作成します。 HTableDescriptor htd = new HTableDescriptor(TableName.valueOf("tablename")); htd.addFamily(new HColumnDescriptor(Bytes.toBytes("family"))); // 単一パーティションのテーブルを作成します。 // 本番環境では、データ特性に基づいてテーブルを事前分割することを推奨します。 admin.createTable(htd); // テーブルを無効化します。 admin.disableTable(TableName.valueOf("tablename")); // テーブルを切り詰めます。 admin.truncateTable(TableName.valueOf("tablename"), true); // テーブルを削除します。 admin.deleteTable(TableName.valueOf("tablename")); }DML ステートメント
// 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 = new Scan(Bytes.toBytes("startRow"), Bytes.toBytes("endRow")); ResultScanner scanner = table.getScanner(scan); for (Result result : scanner) { // クエリ結果を処理します。 // ... } scanner.close(); }