Tablestore は、ビッグデータシナリオでデータテーブルからオフラインデータをバッチ読み取りするための BulkExport 操作を提供します。データがデータテーブルに書き込まれた後、特定の条件に基づいてデータを読み取ることができます。
前提条件
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化を参照してください。
データテーブルが作成され、データがデータテーブルに書き込まれていること。
パラメーター
パラメーター | 説明 |
tableName | データテーブルの名前。 |
inclusiveStartPrimaryKey | バッチ読み取り操作の開始プライマリキーと終了プライマリキー。開始プライマリキーと終了プライマリキーは、有効なプライマリキー、または INF_MIN 型の値と INF_MAX 型の値で構成される仮想ポイントである必要があります。仮想ポイントの列数は、プライマリキーの列数と同じである必要があります。 INF_MIN は無限に小さい値を示します。他の型のすべての値は、INF_MIN 型の値よりも大きくなります。INF_MAX は無限に大きい値を示します。他の型のすべての値は、INF_MAX 型の値よりも小さくなります。
データテーブルの行は、プライマリキー値に基づいて昇順にソートされます。データの読み取りに使用される範囲は、左閉右開区間です。順方向にデータを読み取る場合、プライマリキー値が開始プライマリキー値以上で終了プライマリキー値未満の行が返されます。 |
exclusiveEndPrimaryKey | |
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 などの計算エンジンを使用して、テーブル内のデータを計算および分析することもできます。詳細については、概要を参照してください。