離線批量讀取數(shù)據(jù)
表格存儲(chǔ)提供了BulkExport接口用于在大數(shù)據(jù)場(chǎng)景下批量讀取數(shù)據(jù)表中的數(shù)據(jù)。數(shù)據(jù)寫(xiě)入到數(shù)據(jù)表后,您可以根據(jù)指定條件進(jìn)行數(shù)據(jù)讀取。
前提條件
已初始化OTSClient。具體操作,請(qǐng)參見(jiàn)初始化OTSClient。
已創(chuàng)建數(shù)據(jù)表并寫(xiě)入數(shù)據(jù)。
參數(shù)
參數(shù) | 說(shuō)明 |
tableName | 數(shù)據(jù)表名稱(chēng)。 |
inclusiveStartPrimaryKey | 本次批量讀取的起始主鍵和結(jié)束主鍵,起始主鍵和結(jié)束主鍵需要是有效的主鍵或者是由INF_MIN和INF_MAX類(lèi)型組成的虛擬點(diǎn),虛擬點(diǎn)的列數(shù)必須與主鍵相同。 其中INF_MIN表示無(wú)限小,任何類(lèi)型的值都比它大;INF_MAX表示無(wú)限大,任何類(lèi)型的值都比它小。
數(shù)據(jù)表中的行按主鍵從小到大排序,讀取范圍是一個(gè)左閉右開(kāi)的區(qū)間,正序讀取時(shí),返回的是大于等于起始主鍵且小于結(jié)束主鍵的所有的行。 |
exclusiveEndPrimaryKey | |
columnsToGet | 讀取的列集合,列名可以是主鍵列或?qū)傩粤小?
說(shuō)明
|
filter | 使用過(guò)濾器,在服務(wù)端對(duì)讀取結(jié)果再進(jìn)行一次過(guò)濾,只返回符合過(guò)濾器中條件的數(shù)據(jù)行。更多信息,請(qǐng)參見(jiàn)過(guò)濾器。 說(shuō)明 當(dāng)columnsToGet和filter同時(shí)使用時(shí),執(zhí)行順序是先獲取columnsToGet指定的列,再在返回的列中進(jìn)行條件過(guò)濾。 |
dataBlockType | 此次讀取請(qǐng)求的返回?cái)?shù)據(jù)的格式類(lèi)型。可選項(xiàng)包括PlainBuffer和SimpleRowMatrix。 |
示例
以下示例用于批量讀取指定范圍內(nèi)的數(shù)據(jù)。
private static void bulkExport(SyncClient client, String start, String end){
// 構(gòu)造起始主鍵。
PrimaryKeyBuilder startPrimaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
startPrimaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(String.valueOf(start)));
PrimaryKey startPrimaryKey = startPrimaryKeyBuilder.build();
// 構(gòu)造結(jié)束主鍵。
PrimaryKeyBuilder endPrimaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
endPrimaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(String.valueOf(end)));
PrimaryKey endPrimaryKey = endPrimaryKeyBuilder.build();
// 創(chuàng)建bulkExportRequest。
BulkExportRequest bulkExportRequest = new BulkExportRequest();
// 創(chuàng)建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編碼方式時(shí),請(qǐng)使用以下代碼配置。
// 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);
// 如果設(shè)置DataBlockType為DBT_SIMPLE_ROW_MATRIX,則需要使用以下代碼進(jìn)行結(jié)果打印。
//{
// 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));
// }
//}
// 設(shè)置DataBlockType為DBT_PLAIN_BUFFER并打印結(jié)果。
{
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));
}
}
}
相關(guān)文檔
關(guān)于API的更多信息,請(qǐng)參見(jiàn)BulkExport。
關(guān)于功能接口實(shí)現(xiàn)的更多信息,請(qǐng)參見(jiàn)BulkExportRequest.java和BulkExportResponse.java。
如果要使用索引技術(shù)加速數(shù)據(jù)查詢,您可以通過(guò)二級(jí)索引或者多元索引功能實(shí)現(xiàn)。更多信息,請(qǐng)參見(jiàn)二級(jí)索引或者多元索引。
如果要可視化展示表中數(shù)據(jù),您可以通過(guò)對(duì)接DataV或者Grafana工具實(shí)現(xiàn)。更多信息,請(qǐng)參見(jiàn)數(shù)據(jù)可視化。
如果要下載表中數(shù)據(jù)到本地,您可以通過(guò)DataX、表格存儲(chǔ)命令行CLI工具實(shí)現(xiàn)。更多信息,請(qǐng)參見(jiàn)將表格存儲(chǔ)數(shù)據(jù)下載到本地文件。
如果要計(jì)算與分析表中數(shù)據(jù),您可以通過(guò)表格存儲(chǔ)SQL查詢實(shí)現(xiàn)。更多信息,請(qǐng)參見(jiàn)SQL查詢。
說(shuō)明您還可以通過(guò)MaxCompute、Spark、Hive或者HadoopMR、函數(shù)計(jì)算、Flink等計(jì)算引擎實(shí)現(xiàn)表中數(shù)據(jù)的計(jì)算與分析。具體操作,請(qǐng)參見(jiàn)計(jì)算與分析。