2017-06-12 17 views
2

私はHadoopの豚を習っていますが、私はいつも要素を参照していました。豚の参照

groupwordcount: {group: chararray,words: {(bag_of_tokenTuples_from_line::token: chararray)}} 

入れ子のタプルと袋がある場合は、誰かがどのように要素を参照するか説明してください。

ネストされた参照をよりよく理解するためのリンクは大きな助けになります。

答えて

2

この問題を理解するための簡単なデモンストレーションをしましょう。

はHDFS

に '/tmp/a.txt' フォルダに格納されている

A(AS PigStorageを( '')を用い= LOAD '/tmp/a.txt' A.TXT 'ファイルを言います名前:chararray、用語:chararray、gpa:float);

ダンプA;

(ジョン、FL、3.9)

(ジョン、FL、3.7)

(ジョン、SP、4.0)

(ジョン、SM、3.8)

(メリー、FL、3.8)

(メアリー、フロリダ州、3.9)

(メアリー、SP、4.0)

(メアリー、SM、4.0)

現在、いくつかのパラメータに基づいて、この別名 'A' によってましょうグループは、名前や用語

B = GROUP A BY(名前、用語)と言います。

dump B;

((ジョン、FL)、{(ジョン、FL、3.7)、(ジョン、FL、3.9)})

((ジョン、SM)、{(ジョン、SM、3.8)} )

((ジョン、SP)、{(ジョン、SP、4.0)})

((メリー、FL)、{(メアリー、FL、3.9)、(メアリー、FL、3.8)} )

((メアリー、SM)、{(メアリー、SM、4.0)})

((メアリー、SP)、{(メアリー、SP、4.0)})

説明B;

B:それは問題となっている今

{}グループ:(名称:chararray、用語:chararray)、A:{(フロート名:chararray、用語:chararray、GPA)}あなたが尋ねた声明。グループタプルまたはAタプルまたは両方の要素にアクセスする方法を説明しましょう。

C = foreach B group.name、group.term、A.name、A.term、A.name、A.term、A.gpa;

dump C;

(ジョン、FL、{(ジョン)、(ジョン)}、{(FL)、(FL)}、{(3.7)、(3.9)})

(ジョン、SM、{ (ジョン)}、{(SM)}、{(3.8)})

(ジョン、SP、{(ジョン)}、{(SP)}、{(4.0)})

(メアリー(Mary)、{(Mary)}、{(Mary)}、{(Mary)}、{(Mary)}、{(fl)}、{(3.9)、(3.8)}) sm)}、{(4.0)})

(Mary、sp、{(Mary)}、{(sp)}、{(4.0)})

このようにすべての要素にアクセスしました。

希望ありこれが役に立ちました