Table Store提供了BulkExport介面用於在巨量資料情境下批量讀取資料表中的資料。資料寫入到資料表後,您可以根據指定條件進行資料讀取。
前提條件
已初始化OTSClient。具體操作,請參見初始化OTSClient。
已建立資料表並寫入資料。
參數
參數 | 說明 |
tableName | 資料表名稱。 |
inclusiveStartPrimaryKey | 本次批量讀取的起始主鍵和結束主鍵,起始主鍵和結束主鍵需要是有效主鍵或者是由INF_MIN和INF_MAX類型組成的虛擬點,虛擬點的列數必須與主鍵相同。 其中INF_MIN表示無限小,任何類型的值都比它大;INF_MAX表示無限大,任何類型的值都比它小。
資料表中的行按主鍵從小到大排序,讀取範圍是一個左閉右開的區間,正序讀取時,返回的是大於等於起始主鍵且小於結束主鍵的所有的行。 |
exclusiveEndPrimaryKey | |
columnsToGet | 讀取的列集合,列名可以是主鍵列或屬性列。
說明
|
filter | 使用過濾器,在服務端對讀取結果再進行一次過濾,只返回符合過濾器中條件的資料行。更多資訊,請參見過濾器。 說明 當columnsToGet和filter同時使用時,執行順序是先擷取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。
如果要可視化展示表中資料,您可以通過對接DataV或者Grafana工具實現。更多資訊,請參見資料視覺效果。
如果要下載表中資料到本地,您可以通過DataX、Table Store命令列CLI工具實現。更多資訊,請參見將Table Store資料下載到本地檔案。
如果要計算與分析表中資料,您可以通過Table StoreSQL查詢實現。更多資訊,請參見SQL查詢。
說明您還可以通過MaxCompute、Spark、Hive或者HadoopMR、Function Compute、Flink等計算引擎實現表中資料的計算與分析。具體操作,請參見計算與分析。