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

Tablestore:オフラインデータのバッチ読み取り

最終更新日:Dec 28, 2024

Tablestore は、ビッグデータシナリオでデータテーブルからオフラインデータをバッチ読み取りするための BulkExport 操作を提供します。データがデータテーブルに書き込まれた後、特定の条件に基づいてデータを読み取ることができます。

前提条件

  • OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化を参照してください。

  • データテーブルが作成され、データがデータテーブルに書き込まれていること。

パラメーター

パラメーター

説明

tableName

データテーブルの名前。

inclusiveStartPrimaryKey

バッチ読み取り操作の開始プライマリキーと終了プライマリキー。開始プライマリキーと終了プライマリキーは、有効なプライマリキー、または INF_MIN 型の値と INF_MAX 型の値で構成される仮想ポイントである必要があります。仮想ポイントの列数は、プライマリキーの列数と同じである必要があります。

INF_MIN は無限に小さい値を示します。他の型のすべての値は、INF_MIN 型の値よりも大きくなります。INF_MAX は無限に大きい値を示します。他の型のすべての値は、INF_MAX 型の値よりも小さくなります。

  • inclusiveStartPrimaryKey パラメーターは、開始プライマリキーを指定します。開始プライマリキーを含む行が存在する場合、そのデータ行が返されます。

  • exclusiveEndPrimaryKey パラメーターは、終了プライマリキーを指定します。終了プライマリキーを含む行が存在するかどうかに関係なく、そのデータ行は返されません。

データテーブルの行は、プライマリキー値に基づいて昇順にソートされます。データの読み取りに使用される範囲は、左閉右開区間です。順方向にデータを読み取る場合、プライマリキー値が開始プライマリキー値以上で終了プライマリキー値未満の行が返されます。

exclusiveEndPrimaryKey

columnsToGet

読み取る列。プライマリキー列または属性列の名前を指定できます。

  • 列を指定しない場合、行のすべてのデータが返されます。

  • 列を指定したが、行に指定された列が含まれていない場合、戻り値は null になります。行に指定された列の一部が含まれている場合、行のそれらの列のデータが返されます。

説明
  • デフォルトでは、行をクエリすると、Tablestore は行のすべての列のデータを返します。 columnsToGet パラメーターを指定して、特定の列を返すことができます。たとえば、columnsToGet パラメーターに col0 と col1 が設定されている場合、col0 列と col1 列の値のみが返されます。

  • プライマリキー値に基づいて読み取るように指定した範囲内にある行に、返すように指定した列が含まれていない場合、レスポンスにはその行は含まれません。

  • columnsToGet パラメーターと filter パラメーターを設定した場合、Tablestore は columnsToGet パラメーターで指定された列をクエリし、フィルター条件を満たす行を返します。

filter

サーバー側でクエリ結果をフィルタリングするために使用するフィルター。フィルター条件を満たす行のみが返されます。詳細については、フィルターの設定を参照してください。

説明

columnsToGet パラメーターと filter パラメーターを設定した場合、Tablestore は columnsToGet パラメーターで指定された列をクエリし、フィルター条件を満たす行を返します。

dataBlockType

この読み取りリクエストに対して返されるデータのフォーマットタイプ。有効な値:PlainBuffer および SimpleRowMatrix。

次のサンプルコードは、プライマリキー値が特定の範囲内にあるデータをバッチ読み取りする方法の例を示しています。

private static void bulkExport(SyncClient client, String start, String end){
    // 開始プライマリキーを指定します。
    PrimaryKeyBuilder startPrimaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
    startPrimaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(String.valueOf(start)));
    PrimaryKey startPrimaryKey = startPrimaryKeyBuilder.build();

    // 終了プライマリキーを指定します。
    PrimaryKeyBuilder endPrimaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
    endPrimaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(String.valueOf(end)));
    PrimaryKey endPrimaryKey = endPrimaryKeyBuilder.build();

    // BulkExportRequest を作成します。
    BulkExportRequest bulkExportRequest = new BulkExportRequest();
    // BulkExportQueryCriteria を作成します。
    BulkExportQueryCriteria bulkExportQueryCriteria = new BulkExportQueryCriteria("<TABLE_NAME>");

    bulkExportQueryCriteria.setInclusiveStartPrimaryKey(startPrimaryKey);
    bulkExportQueryCriteria.setExclusiveEndPrimaryKey(endPrimaryKey);
    // DBT_PLAIN_BUFFER エンコーディングメソッドを使用します。
    bulkExportQueryCriteria.setDataBlockType(DataBlockType.DBT_PLAIN_BUFFER);
    // DBT_SIMPLE_ROW_MATRIX エンコーディングメソッドを使用する場合は、次のコードを使用します。
    // bulkExportQueryCriteria.setDataBlockType(DataBlockType.DBT_SIMPLE_ROW_MATRIX);
    bulkExportQueryCriteria.addColumnsToGet("pk");
    bulkExportQueryCriteria.addColumnsToGet("DC1");
    bulkExportQueryCriteria.addColumnsToGet("DC2");

    bulkExportRequest.setBulkExportQueryCriteria(bulkExportQueryCriteria);
    // BulkExportResponse を取得します。
    BulkExportResponse bulkExportResponse = client.bulkExport(bulkExportRequest);
    
    // DataBlockType を DBT_SIMPLE_ROW_MATRIX に設定した場合は、次のコードを使用して結果を出力する必要があります。
    //{
    //    SimpleRowMatrixBlockParser parser = new SimpleRowMatrixBlockParser(bulkExportResponse.getRows());
    //    List<Row> rows = parser.getRows();
    //    for (int i = 0; i < rows.size(); i++){
    //        System.out.println(rows.get(i));
    //    }
    //}

    // DataBlockType を DBT_PLAIN_BUFFER に設定し、結果を出力します。
    {
        PlainBufferBlockParser parser = new PlainBufferBlockParser(bulkExportResponse.getRows());
        List<Row> rows = parser.getRows();
        for (int i = 0; i < rows.size(); i++){
            System.out.println(rows.get(i));
        }
    }
}

関連情報

  • API 操作の詳細については、BulkExportを参照してください。

  • オフラインデータをバッチ読み取りするための操作の呼び出し方法の詳細については、BulkExportRequest.java および BulkExportResponse.java を参照してください。

  • データクエリを高速化するには、セカンダリインデックスまたは検索インデックスを使用できます。詳細については、セカンダリインデックスまたは検索インデックスを参照してください。

  • テーブルのデータを視覚化する場合は、Tablestore を DataV または Grafana に接続できます。詳細については、データの視覚化を参照してください。

  • テーブルからローカルファイルにデータをダウンロードする場合は、DataX または Tablestore CLI を使用できます。詳細については、Tablestore のデータをローカルファイルにダウンロードするを参照してください。

  • Tablestore のデータに対して計算または分析を実行する場合は、Tablestore の SQL クエリ機能を使用できます。詳細については、SQL クエリを参照してください。

    説明

    また、MaxCompute、Spark、Hive、Hadoop MapReduce、Function Compute、Realtime Compute for Apache Flink などの計算エンジンを使用して、テーブル内のデータを計算および分析することもできます。詳細については、概要を参照してください。