2

2 つの hbase 入力エイリアスがあります。

X:
(a1,b2)
(a2,b2)
...
(an,bn)

Y:
(c1)
(c2)
...
(cn)

ここで、両方のエイリアスを「結合」したいと思います。X の最初の行と Y の最初の行です。最終結果は次のようになります。

RESULT:
(a1,b1,c1)
(a2,b2,c2)
...
(an,bn,cn)

どうやってやるの?

4

2 に答える 2

1

Pig の基本原則は、順序は重要ではないということです。より一般的には、リレーションはタプルのリストではなく、タプルのセットです。データにとって順序が重要である場合は、データがたまたま格納される方法ではなく、データ自体に反映する必要があります。

それでも、データをロードするときに Pig が希望する順序でデータを処理することを保証できる場合、回避策は存在します。DataFuEnumerateから UDF を使用します。

Xenum = FOREACH (GROUP X ALL) GENERATE FLATTEN(Enumerate(X));
Yenum = FOREACH (GROUP Y ALL) GENERATE FLATTEN(Enumerate(Y));
RESULT = FOREACH (JOIN Xenum BY i, Yenum BY i) GENERATE a, b, c;
于 2013-08-12T12:06:36.480 に答える