更新时间:2024-08-05 GMT+08:00
读Kudu数据
功能简介
通过KuduClient.newScannerBuilder(KuduTable table)方法生成一个KuduScanner对象,然后再通过设置谓词条件从Kudu表里过滤读取数据。
代码样例
如下是读取数据的代码片段:
KuduTable table = client.openTable(tableName);
Schema schema = table.getSchema();
// Scan with a predicate on the 'key' column, returning the 'value' and "added" columns.
List<String> projectColumns = new ArrayList<>(2);
projectColumns.add("key");
projectColumns.add("value");
projectColumns.add("added");
int lowerBound = 0;
KuduPredicate lowerPred = KuduPredicate.newComparisonPredicate(
schema.getColumn("key"),
ComparisonOp.GREATER_EQUAL,
lowerBound);
int upperBound = numRows / 2;
KuduPredicate upperPred = KuduPredicate.newComparisonPredicate(
schema.getColumn("key"),
ComparisonOp.LESS,
upperBound);
KuduScanner scanner = client.newScannerBuilder(table)
.setProjectedColumnNames(projectColumns)
.addPredicate(lowerPred)
.addPredicate(upperPred)
.build();
// Check the correct number of values and null values are returned, and
// that the default value was set for the new column on each row.
// Note: scanning a hash-partitioned table will not return results in primary key order.
int resultCount = 0;
int nullCount = 0;
while (scanner.hasMoreRows()) {
RowResultIterator results = scanner.nextRows();
while (results.hasNext()) {
RowResult result = results.next();
if (result.isNull("value")) {
nullCount++;
}
double added = result.getDouble("added");
if (added != DEFAULT_DOUBLE) {
throw new RuntimeException("expected added=" + DEFAULT_DOUBLE +
" but got added= " + added);
}
resultCount++;
}
}
示例代码中:
- projectColumns表示要返回的列信息。
- lowerPred和upperBound表示作用在主键key上的谓词。
父主题: 开发Kudu应用