3

我正在使用 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;

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

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

我怎样才能让它工作?

4

2 回答 2

2

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

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

感谢这篇文章

于 2013-09-10T20:32:24.880 回答
0

如果列中有非文本值,则需要使用 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);
于 2016-11-14T09:24:01.157 回答