【问题标题】:PIG - HBASE - Casting valuesPIG - HBASE - 铸造值
【发布时间】:2013-09-10 20:18:20
【问题描述】:

我正在使用 PIG 处理 HBase 表中的行。 HBase 表中的值存储为字节数组。

我不知道是否必须编写一个将字节数组转换为各种类型的 UDF,或者 pig 是否会自动执行此操作。

我有以下脚本:

raw = LOAD 'hbase://TABLE' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('CF:I') AS (product_id:bytearray);
ids = FOREACH raw GENERATE (int)product_id;
dump ids;

我得到一个括号列表'()'

根据docs,它应该可以工作。我检查了hbase shell中的值,它们都是 value=\x00\x00\x00\x02

我怎样才能让它工作?

【问题讨论】:

    标签: hadoop casting hbase apache-pig


    【解决方案1】:

    需要添加以下选项才能将其投射...

    LOAD 'hbase://TABLE' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('CF:I','-caster HBaseBinaryConverter') AS (product_id:bytearray);
    

    感谢post

    【讨论】:

      【解决方案2】:

      如果列中有非文本值,则需要使用 HBaseBinaryConverter 指定 -caster 选项(默认为 Utf8StorageConverter)并将它们映射到相应的类型,以便 PIG 在将它们序列化为文本之前正确转换它们。

      a = load 'hbase://TESTTABLE_1' using org.apache.pig.backend.hadoop.hbase.HBaseStorage('TESTCOLUMN_A TESTCOLUMN_B TESTCOLUMN_C ','-loadKey -caster HBaseBinaryConverter') as (rowKey:chararray,col_a:int, col_b:double, col_c:chararray);
      

      【讨论】:

        猜你喜欢
        • 2014-04-30
        • 2021-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多