5

データセットをロードし、それを 2 つの別個のデータセットに分割してから、いくつかの計算を実行し、最後に別の計算フィールドを追加する豚のスクリプトがあります。ここで、これら 2 つのデータセットを再び結合したいと思います。

A = LOAD '/user/hdfs/file1' AS (a:int, b:int);

A1 = FILTER A BY a > 100;
A2 = FILTER A BY a <= 100 AND b > 100;

-- Now I do some calculation on A1 and A2

したがって、基本的に、計算後の両方のスキーマは次のとおりです。

{A1 : {a:int, b:int, type:chararray}}
{A2:  {a:int, b:int, type:chararray}}

ここで、これを HDFS に戻す前に、2 つのデータ セットをマージして戻します。UNION ALLSQLのようなもの。どうやってやるの?

4

2 に答える 2

5

UNIONは機能するはずですが、元のスキーマは表示されている出力と一致しません(bはchararrayとしてロードされ、後でintになります)-これはタイプミスだと思います。

タプルに異なる順序のフィールドがある場合、UNIONを実行するときにONSCHEMAキーワードを使用できます。

A_MERGED = UNION ONSCHEMA A1, A2;

UNIONのPigLatinドキュメントへのリンクを編集

于 2013-01-11T12:15:04.520 に答える