表格存储提供了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、表格存储命令行CLI工具实现。更多信息,请参见将表格存储数据下载到本地文件。
如果要计算与分析表中数据,您可以通过表格存储SQL查询实现。更多信息,请参见SQL查询。
说明您还可以通过MaxCompute、Spark、Hive或者HadoopMR、函数计算、Flink等计算引擎实现表中数据的计算与分析。具体操作,请参见计算与分析。