2013-09-10 59 views
3

我正在使用PIG處理HBase表中的行。 HBase表中的值存儲爲bytearrays。PIG - HBASE - 鑄造值

我不知道是否必須編寫一個UDF,它將字節串分配給各種類型,或者如果豬自動執行該操作。

我有以下腳本:

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

我該如何得到這個工作?

回答

2

需要添加下列選項得到它投...

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

由於這個post

0

如果在列中有非文本值,則需要使用HBaseBinaryConverter(默認爲Utf8StorageConverter)指定-caster選項,並將它們映射到各自的類型,以便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);