我正在使用表映射器通过 HBase 编写映射缩减作业。我想跳过没有特定列的行。例如,如果映射器从“元”系列、“源”限定符列中读取,则映射器应该期望该列中存在某些内容。我知道我可以向扫描对象添加列,但我希望这仅仅限制扫描可以看到哪些行,而不是需要存在哪些列。
我可以使用什么过滤器来跳过没有我需要的列的行?
此外,过滤器概念本身有点奇怪。过滤器是按行操作还是按键值操作? “过滤行”是否意味着跳过该行或包含它,或者只是将其通过过滤器?
是否有比 hbase javadocs 更清楚地解释这一点的地方?
最佳答案
//to skip columns with Column Prefix
Filter columnFilter = new ColumnPrefixFilter(Bytes.toBytes("col-1"));
//To skip the values
Filter valueFilter= new ValueFilter(CompareFilter.CompareOp.NOT_EQUAL,
new BinaryComparator(Bytes.toBytes("yourvalue")));
To Avoid the multiple column names you can pass multiple column filter with must pass all option(which is default)
Below is sample with single column filter.
Filter avoidColumnNamesFilter = new SkipFilter(columnFilter);
scan.setFilter(avoidColumnNamesFilter)
Similarly to avoid certain value pass valuefilter to skip filter
关于java - 如何跳过缺少特定列的 HBase 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9879218/