1

私は Hadoop/PIG の初心者です。

の違いを誰か教えてください

grunt> A = join A by $1, B by $1 using 'merge';     

そして
grunt> A = $1 で A を結合し、B を $1 で結合します。

次のデータを持つ2つのファイル1.txtと2.txtがあります1.txt
A
1
B 3
C 5
D 7

2.txt
AA 1
BB 2
CC 4
DD 6

そして、出力をこのようにマージしたい
A 1
AA 1
BB 2
B 3
CC 4
C 5
DD 6
D 7

「マージ」を使用すると、目的の出力が得られますか?

試してみましたが、そうではありません。

ここで何が欠けているのか教えてください。

4

1 に答える 1

3

外部結合ではなく、内部結合(共通キーで結合されたデータセット)を取得しているように聞こえます(これは、目的の出力からの後のように見えます)。

単語キーワードFULLを使用して、完全外部結合が必要であることを示します。

grunt> A = join A by $1 FULL, B by $1 using 'merge';  

ただし、両方のデータセットに同じ $0 を持つレコードがある場合、予期しない結果が生じる可能性があります (内部結合の例を参照してください)。また、出力を修正して、2 つのデータセット間で欠落している列を削除する必要がある場合もあります。

または、あるデータセットを別のデータセットに追加して並べ替えたい場合は、UNION および ORDER BY 演算子を使用します。

grunt> U = UNION A, B;
grunt> OrderedU = ORDER U BY $1

見る

それぞれの詳細については

于 2012-06-11T20:16:02.403 に答える