本文介绍如何通过 Java SDK 迭代读取表格存储中的数据。
前提条件
方法说明
public Iterator<Row> createRangeIterator(RangeIteratorParameter rangeIteratorParameter) throws TableStoreException, ClientException
示例代码
以下示例代码使用迭代方式读取 test_table 表中从主键值 row1 开始的数据。
public static void createRangeIteratorExample(SyncClient client) {
// 构造迭代查询条件
RangeIteratorParameter rangeIteratorParameter = new RangeIteratorParameter("test_table");
// 设置迭代查询起始主键
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
rangeIteratorParameter.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
// 设置迭代查询结束主键,返回结果不包含结束主键
primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.INF_MAX);
rangeIteratorParameter.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
// 设置查询版本
rangeIteratorParameter.setMaxVersions(1);
// 调用 createRangeIterator 获取迭代器
Iterator<Row> iterator = client.createRangeIterator(rangeIteratorParameter);
while(iterator.hasNext()) {
Row row = iterator.next();
System.out.println(row);
}
}
您可以在迭代读取数据时参考以下示例代码进行参数设置。
设置数据读取方向。
// 设置反向读取数据 rangeIteratorParameter.setDirection(Direction.BACKWARD); // 设置迭代查询起始主键,反向读取数据时,起始主键要大于结束主键 PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder(); primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.INF_MAX); rangeIteratorParameter.setInclusiveStartPrimaryKey(primaryKeyBuilder.build()); // 设置迭代查询结束主键,返回结果不包含结束主键 primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder(); primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1")); rangeIteratorParameter.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
设置读取的数据版本范围,结果只返回版本范围内的数据。
// 设置查询的数据版本范围为当前时间往前一天 rangeIteratorParameter.setTimeRange(new TimeRange(System.currentTimeMillis() - 86400*1000, System.currentTimeMillis()));
设置最大迭代读取行数。
rangeIteratorParameter.setMaxCount(20);
设置缓冲大小。
rangeIteratorParameter.setBufferSize(5);
指定读取的属性列。
rangeIteratorParameter.addColumnsToGet("col2");
相关文档
该文章对您有帮助吗?