我正在扫描hbase,方法是将scanner设置为只包含我想要的特定列名和使用列筛选器的一系列列。
添加单个行:
known_fields.forEach(known_field ->scanner.addColumn("x".getBytes(), known_field.getBytes()));
我还添加了一个列过滤器:
scanner.setFilter(new ColumnRangeFilter(start, true, stop, true));
所有变量都有正确的值。我扫描如下
scanner.setCacheBlocks(false);
scanner.setBatch(1000);
ResultScanner results = null;
Table table = null;
try {
table = connection.getTable("table_test");
results = table.getScanner(scanner);
boolean hasPerformed;
for (final Result result : results) {
...
这个 results
始终为空。但是,如果我也不评论的话 scanner.setFilter(new ColumnRangeFilter(start, true, stop, true));
或者 scanner.addColumn(
,结果非常好。它与组合不起作用。
如何实现已知列和一系列列的组合?
1条答案
按热度按时间mlmc2os51#
如果有少量列
scanner.addColumn
,可以将filterlist与一起使用MUST_PASS_ONE
运算符并向其传递乘法ColumnRangeFilter
. 在这种情况下,add column to scan相当于add columnrangefilter,其中包含起始列和结束列。例如