1

bag データ型を pig テーブルにロードしようとしていますが、代わりに null 値が表示されます。

サンプル入力:

A000,B000,C000,1.0,1-1-14,3-31-14,{(A101,1-Jan-2014,0.03,0.04)}
A001,B001,C001,10.0,1-1-14,3-31-14,{(A101,1-Jan-2014,0.03,0.045)}
A002,B002,C002,100.0,1-1-14,3-31-14,{(A101,1-Jan-2014,0.03,0.04)}

豚のスクリプト:

raw = LOAD 'input/meh.log' USING PigStorage(',') AS (PID, FUNDID, GICID, balance, startDate, endDate, rates:bag{t:tuple(t1,t2,t3,t4)});
DUMP raw;

出力:

(A000,B000,C000,1.0,1-1-14,3-31-14,)
(A001,B001,C001,10.0,1-1-14,3-31-14,)
(A002,B002,C002,100.0,1-1-14,3-31-14,)
                                    ^Bag values should be here

私は何を間違っていますか?LOAD 関数からバッグ/タプル宣言を削除しようとしましたが、まだ何もありません。Pig に付属のバッグのチュートリアルで作業するときにも、これと同じアプローチを使用しましたが、うまく機能しているように見えました。

UPDATE :各タプルが 1 つの値を持つようにバッグ入力を設定すると、このスクリプトが機能します。これは私のバージョンの Pig (0.12.2) に問題があるのではないかと考え始めています。Hadoop 2.3 で実行できるように、Ant を使用して Pig をビルドする必要がありました。考え?

4

1 に答える 1

0

データを再フォーマットしました

A000    B000    C000    1   1-1-14  3-31-14 {(101,1-Jan-2014,0.03,0.04)}
A001    B001    C001    10  1-1-14  3-31-14 {(101,1-Jan-2014,0.03,0.04)}
A002    B002    C002    100 1-1-14  3-31-14 {(101,1-Jan-2014,0.03,0.04)}

値をタブで区切ってください。奇妙なことに、それは機能します。区切り文字を「,」に設定したため、豚がバッグを読み取ろうとしたときに混乱した可能性があります。多変量タプルを含むバッグがある場合は、区切り文字を「,」以外に設定するか、まったく設定しないでください。

于 2014-07-24T14:00:58.693 に答える