java - 如何跳过缺少特定列的 HBase 行?

标签 java filter mapreduce hbase

我正在使用表映射器通过 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/

相关文章:

Java Unicode 字符显示框而不是 Runic 字母

java - 如何将 fetchMap() 与 RecordMapper 一起使用?

javascript - 按两个不同类别过滤

xml - 通过源模型函数从源模型中删除行时 QSortFilterProxyModel 崩溃

c - 禁用 gphoto2 的详细错误消息

hadoop - Hive - 选择计数 (*) 不与 Tez 一起使用但与 MR 一起使用

java - 如何在返回多种 XML 类型的 URL 上使用 Spring RestTemplate 和 JAXB 编码

java - 通过第二个 Web 服务接收 Java http 响应正文

javascript - CouchDB 映射/归约功能可按日期显示用户的有限结果

google-app-engine - App Engine 备份永远不会完成,唯一的线索是 mapreduce worker 回调失败