【问题标题】:Using Pig to Access HBASE with HBaseStorage使用 Pig 通过 HBaseStorage 访问 HBASE
【发布时间】: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


    【解决方案1】:

    您在第一个示例中错误地指定了类型。如果使用通配符,它​​将被映射到地图。如果您指定单个列,它将被映射到标量数据类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      相关资源
      最近更新 更多