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);//建立predicateKuduScanner scanner = client.newScannerBuilder(table) .readMode(AsyncKuduScanner.ReadMode.READ_AT_SNAPSHOT)//設定讀取快照模式 .setProjectedColumnNames(projectColumns) .addPredicate(kp)//設定predicate .snapshotTimestampMicros(Long.valueOf("1463388259000000"))//設定時間戳記 .build();...
注意,讀取的是設定時間戳記以前最近的資料。