首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何跳过缺少特定列的HBase行?

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

Stack Overflow用户
提问于 2012-03-27 04:22:11
回答 2查看 3.5K关注 0票数 1

我正在使用表映射器在HBase上编写一个mapreduce作业。我想跳过没有特定列的行。例如,如果映射器从"meta“family,"source”限定符列中读取,映射器应该期望在该列中有内容。我知道我可以向扫描对象添加列,但我希望这只会限制扫描可以看到哪些行,而不是哪些列需要在那里。

我可以使用什么过滤器来跳过没有需要的列的行?

此外,过滤器的概念本身也有点奇怪。筛选器是按行操作还是按键值操作?“筛选行”是指跳过或包含该行,还是简单地将其放入筛选器?

有没有比hbase javadoc更清楚地解释这一点的地方?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-07 07:09:24

HBase一书是回答大量问题的最佳去处:http://hbase.apache.org/book/client.filter.html特别解释了过滤器是如何工作的。

过滤器非常有效,因为它们是在服务器端执行的,并减少了通过网络流动的数据量。我同意javadoc确实让include或exclude的语义变得不那么明显了,但我认为这本书已经说得很清楚了:过滤器定义了什么必须为true才能将行返回给客户端。

扫描也是定义必须返回的内容的一种好方法,尽管您在定义扫描时需要小心。如果将扫描定义为在一个api调用中包含整个列族,然后在稍后的代码中定义要返回的特定列限定符,则第二个调用将覆盖第一个调用,并且只返回该特定限定符,而不返回列族中的其他列限定符。

票数 0
EN

Stack Overflow用户

发布于 2015-07-12 01:50:17

代码语言:javascript
运行
复制
//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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9879218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档