3

HBase テーブルの行を処理するために PIG を使用しています。HBase テーブルの値は bytearray として格納されます。

bytearray をさまざまな型にキャストする 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シェルで値を確認しましたが、すべてです 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 (デフォルトは 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);
于 2016-11-14T09:24:01.157 に答える