すべてのプロダクト
Search
ドキュメントセンター

Tablestore:Tablestore HBase クライアントのクイックスタート

最終更新日:Jun 04, 2026

Tablestore Tablestore HBase クライアントを使用して、Tablestore でデータの読み取りと書き込みを行うプログラムを構築します。

前提条件

操作手順

説明

例では、Tablestore HBase クライアントを HBase 2.x.x 向けに使用します。

手順 1: Tablestore HBase クライアントの依存関係をインポートする

Maven プロジェクトの pom.xml に次の依存関係を追加します。

<dependencies>
    <dependency>
        <groupId>com.aliyun.openservices</groupId>
        <artifactId>tablestore-hbase-client</artifactId>
        <version>2.0.12</version>
    </dependency>
</dependencies>                            

ステップ 2:HBase 構成ファイルを設定

これらの項目を hbase-site.xml に追加します。Tablestore インスタンスのエンドポイント、Tablestore インスタンス名、および RAM ユーザーの AccessKey を実際の値に置き換えます。

<configuration>
    <property>
        <name>hbase.client.connection.impl</name>
        <value>com.alicloud.tablestore.hbase.TablestoreConnection</value>
    </property>
    <property>
        <name>tablestore.client.endpoint</name>
        <value>endpoint</value>
    </property>
    <property>
        <name>tablestore.client.instancename</name>
        <value>instance_name</value>
    </property>
    <property>
        <name>tablestore.client.accesskeyid</name>
        <value>access_key_id</value>
    </property>
    <property>
        <name>tablestore.client.accesskeysecret</name>
        <value>access_key_secret</value>
    </property>
    <property>
        <name>hbase.client.tablestore.family</name>
        <value>f1</value>
    </property>
    <property>
        <name>hbase.client.tablestore.table</name>
        <value>ots_adaptor</value>
    </property>
</configuration>                       

手順 3: 接続先:Tablestore

Tablestore に接続するために、TableStoreConnection オブジェクトを作成します。

Configuration config = HBaseConfiguration.create();

// Tablestore 接続を作成します。
Connection connection = ConnectionFactory.createConnection(config);

// Admin オブジェクトは、テーブルの作成、管理、削除に使用されます。
Admin admin = connection.getAdmin();                            

ステップ 4:テーブル操作の実行

テーブルの作成

テーブル名を指定します。MaxVersion および TimeToLive はデフォルト値を使用します。

// カラムファミリーが 1 つだけの HTableDescriptor を作成します。
HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf(TABLE_NAME));

// カラムファミリーを作成します。MaxVersion および TimeToLive にはデフォルト値が使用されます。MaxVersion のデフォルト値は 1 で、TimeToLive のデフォルト値は Integer.MAX_VALUE です。
descriptor.addFamily(new HColumnDescriptor(COLUMN_FAMILY_NAME));

// Admin オブジェクトの createTable 操作を呼び出して、テーブルを作成します。
System.out.println("Create table " + descriptor.getNameAsString());
admin.createTable(descriptor);                            

テーブルの削除

Admin API を使用してテーブルを削除します。

System.out.println("Delete the table");
admin.disableTable(table.getName());
admin.deleteTable(table.getName());                          

ステップ 5:基本的なデータ操作の実行

データの書き込み

1 行のデータを Tablestore に書き込みます。

// 単一テーブル内のデータの読み取り、書き込み、更新、削除を行うための TablestoreTable オブジェクトを作成します。
Table table = connection.getTable(TableName.valueOf(TABLE_NAME));

// Put オブジェクトを作成します。プライマリキーは row_1 です。
System.out.println("Write one row to the table");
Put put = new Put(ROW_KEY);

// カラムを追加します。Tablestore は 1 つのカラムファミリーのみをサポートします。カラムファミリー名は hbase-site.xml ファイルで設定します。このパラメーターを設定しない場合、デフォルト値 f が使用されます。そのため、データを書き込む際に COLUMN_FAMILY_NAME を空のままにできます。

put.addColumn(COLUMN_FAMILY_NAME, COLUMN_NAME, COLUMN_VALUE);

// Table オブジェクトの put 操作を実行します。HBase API を使用して、1 行のデータを Tablestore に書き込みます。
table.put(put);                            

データの読み取り

  • 1 行のデータを読み取り

    指定された行からデータを読み取ります。

    // プライマリキーが ROW_KEY である行を読み取るための Get オブジェクトを作成します。
    Result getResult = table.get(new Get(ROW_KEY));
    
    
    // 結果を出力します。
    String value = Bytes.toString(getResult.getValue(COLUMN_FAMILY_NAME, COLUMN_NAME));
    System.out.println("Get one row by row key");
    System.out.printf("\t%s = %s\n", Bytes.toString(ROW_KEY), value);                            
  • データのスキャン

    複数行の範囲からデータを読み取ります。

    // テーブル内のすべての行をスキャンします。
    System.out.println("Scan for all rows:");
    Scan scan = new Scan();
    ResultScanner scanner = table.getScanner(scan);
    
    // 結果をループで出力します。
    for (Result row : scanner) {
        byte[] valueBytes = row.getValue(COLUMN_FAMILY_NAME, COLUMN_NAME);
        System.out.println('\t' + Bytes.toString(valueBytes));
    }                            

完全なサンプルコード

説明

このプログラムは、HBase API を使用して Tablestore にアクセスします。ソースコードは、HBase プロジェクトの GitHub 上の src/test/java/samples/HelloWorld.java にあります。

package samples;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class HelloWorld {
    /** データテーブルの名前。 **/
    private static final byte[] TABLE_NAME = Bytes.toBytes("HelloTablestore");
    /** 行のプライマリキー。 **/
    private static final byte[] ROW_KEY = Bytes.toBytes("row_1");
    /** カラムファミリー。 **/
    private static final byte[] COLUMN_FAMILY_NAME = Bytes.toBytes("f");
    /** カラム名。 **/
    private static final byte[] COLUMN_NAME = Bytes.toBytes("col_1");
     /** カラム値。 **/
    private static final byte[] COLUMN_VALUE = Bytes.toBytes("col_value");
    public static void main(String[] args) {
        helloWorld();
    }
    private static void helloWorld() {
        try  {
            // Tablestore に接続します。
            Configuration config = HBaseConfiguration.create();
            Connection connection = ConnectionFactory.createConnection(config);
            Admin admin = connection.getAdmin();
            
            // データテーブルを作成します。
            HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf(TABLE_NAME));
            descriptor.addFamily(new HColumnDescriptor(COLUMN_FAMILY_NAME));
            System.out.println("Create table " + descriptor.getNameAsString());
            admin.createTable(descriptor);
            
            // Tablestore にデータを書き込みます。
            Table table = connection.getTable(TableName.valueOf(TABLE_NAME));
            System.out.println("Write one row to the table");
            Put put = new Put(ROW_KEY);
            put.addColumn(COLUMN_FAMILY_NAME, COLUMN_NAME, COLUMN_VALUE);
            table.put(put);
            Result getResult = table.get(new Get(ROW_KEY));
            
            // 1 行のデータを読み取ります。
            String value = Bytes.toString(getResult.getValue(COLUMN_FAMILY_NAME, COLUMN_NAME));
            System.out.println("Get a one row by row key");
            System.out.printf("\t%s = %s\n", Bytes.toString(ROW_KEY), value);
            
            // データをスキャンします。
            Scan scan = new Scan();
            System.out.println("Scan for all rows:");
            ResultScanner scanner = table.getScanner(scan);
            for (Result row : scanner) {
                byte[] valueBytes = row.getValue(COLUMN_FAMILY_NAME, COLUMN_NAME);
                System.out.println('\t' + Bytes.toString(valueBytes));
            }
            
            // データテーブルを削除します。
            System.out.println("Delete the table");
            admin.disableTable(table.getName());
            admin.deleteTable(table.getName());
            
            // 接続を閉じます。
            table.close();
            admin.close();
            connection.close();
        } catch (IOException e) {
            System.err.println("Exception while running HelloTablestore: " + e.toString());
            System.exit(1);
        }
    }
}            

参考文献