kudu scan java api

kudu 0.8.0版本支持scan来查询一个区域内的数据,目前不支持根据主键get api,可关注issueKUDU-1235,小米冰琳兄在做。

根据range查询

样例

KuduClient client = new KuduClient.KuduClientBuilder(KUDU_MASTER).build();
List<String> projectColumns = new ArrayList<String>(1);
projectColumns.add("id");
projectColumns.add("name");
projectColumns.add("age");
KuduTable table = client.openTable(tableName);
Schema schema = table.getSchema();
PartialRow partialRow = schema.newPartialRow();
partialRow.addInt("id", 1);
PartialRow partialRow1 = schema.newPartialRow();
partialRow1.addInt("id", 2);
ColumnRangePredicate crp = new 
KuduScanner scanner = client.newScannerBuilder(table)
            .setProjectedColumnNames(projectColumns)//指定输出列
            .lowerBound(partialRow)//指定下限(包含)
            .exclusiveUpperBound(partialRow1)//指定上限(不包含)
            .build();
while (scanner.hasMoreRows()) {
    RowResultIterator results = scanner.nextRows();
    int i=0;
    while (results.hasNext()) {
        RowResult result = results.next();
        System.out.println(i+" : "+result.getInt(0)+" "+result.getString(1)+" "+result.getInt(2));
    }
    break;
}

根据判断查询

样例

...
KuduPredicate kp = KuduPredicate.newComparisonPredicate(schema.getColumn("id"), KuduPredicate.ComparisonOp.EQUAL, 1);//创建predicate
KuduScanner scanner = client.newScannerBuilder(table)
                .readMode(AsyncKuduScanner.ReadMode.READ_AT_SNAPSHOT)//设置读取快照模式
                .setProjectedColumnNames(projectColumns)
                .addPredicate(kp)//设置predicate
                .snapshotTimestampMicros(Long.valueOf("1463388259000000"))//设置时间戳
                .build();
...

注意,读取的是设置时间戳以前最近的数据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值