2013-09-10 6 views
3

Я использую PIG для обработки строк в таблице HBase. Значения в таблице HBase сохраняются как байты.PIG - HBASE - значения отливки

Я не могу понять, должен ли я писать UDF, который передает bytearrays различным типам, или если свинья делает это автоматически.

У меня есть следующий сценарий:

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

Если у вас есть нетекстовые значения в столбцах, вам нужно указать опцию -caster с помощью HBaseBinaryConverter (по умолчанию - 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); 
Смежные вопросы