【发布时间】:2014-08-10 17:43:15
【问题描述】:
我一直在尝试使用 Pig 通过 HBaseStorage 类访问 HBase。我发现 HBaseStorage 用来匹配列的方法出现了奇怪的行为。考虑以下示例:
test = load 'hbase://resultstable' using org.apache.pig.backend.hadoop.hbase.HBaseStorage('foo:fail','-loadKey false') as (testresults:map[]);
确定列族“foo”和列名“fail”存在,并且该列中存在记录。查询不返回任何记录。但是以下查询返回记录:
test = load 'hbase://resultstable' using org.apache.pig.backend.hadoop.hbase.HBaseStorage('foo:fail*','-loadKey false') as (testresults:map[]);
请注意这两个示例之间的区别在于后者使用 'foo:fail*' 作为参数。 我的猜测是,列名中存储了一个空终止符,并且二进制完全匹配比较失败,因为在第一个示例中,空终止符没有显式传递(我认为它不应该)。
“foo:fail”列是使用标准 HBase 库通过包含传递给适当 HBase java API 调用的列名的 java 字符串创建的。
这是预期的行为吗?所有文档(包括 O'Reilly 的书)都没有提到它。
猪版本是0.13.0。 HBase 版本为 0.94.10。
【问题讨论】:
标签: java hadoop hbase apache-pig