PIG - HBASE - 铸造值
Posted
技术标签:
【中文标题】PIG - HBASE - 铸造值【英文标题】:PIG - HBASE - Casting values 【发布时间】: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
我怎样才能让它工作?
【问题讨论】:
【参考方案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);
【讨论】:
以上是关于PIG - HBASE - 铸造值的主要内容,如果未能解决你的问题,请参考以下文章
Pig、Oozie 和 HBase - java.io.IOException: No FileSystem for scheme: hbase