gpt4 book ai didi

java - HBase addColumn 和 setFilter

转载 作者:可可西里 更新时间:2023-11-01 14:33:13 27 4
gpt4 key购买 nike

我通过仅使用我想要的特定列名称和使用列过滤器的列范围设置扫描仪来扫描 HBase。

添加单独的行:

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(,结果非常好。它不适用于组合。

如何实现已知列与范围列的组合?

最佳答案

如果 scanner.addColumn 的列数较少,您可以使用 FilterList使用 MUST_PASS_ONE 运算符并传递给它乘以 ColumnRangeFilter。添加要扫描的列在这种情况下相当于添加具有重合开始和结束列的 ColumnRangeFilter。例如

Filter filter = new FilterList(FilterList.Operator.MUST_PASS_ONE);
known_fields.forEach(known_field ->
filter.addFilter(new ColumnRangeFilter(known_field.getBytes(), true,
known_field.getBytes(), true));
filter.add(new ColumnRangeFilter(start, true, stop, true));
scan.setFilter(filter);

关于java - HBase addColumn 和 setFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33915006/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com