Apache-pig-diff
Apache Pig-DIFF()
Pig Latinの* DIFF()*関数は、タプル内の2つのバッグ(フィールド)を比較するために使用されます。 タプルの2つのフィールドを入力として受け取り、それらを照合します。 それらが一致する場合、空のバッグを返します。 一致しない場合、1つのフィールド(バッグ)に存在し、他のフィールド(バッグ)にない要素を見つけ、それらの要素をバッグにラップして返します。
構文
以下に、* DIFF()*関数の構文を示します。
例
通常、* DIFF()*関数は、タプル内の2つのバッグを比較します。 以下にその例を示します。ここでは、2つのリレーションを作成し、それらをコグループ化し、それらの差を計算します。
以下に示すように、HDFSディレクトリ /pig_data/ に emp_sales.txt と emp_bonus.txt の2つのファイルがあると仮定します。 emp_sales.txt には営業部門の従業員の詳細が含まれ、 emp_bonus.txt にはボーナスを受け取った従業員の詳細が含まれます。
そして、これらのファイルを、それぞれ emp_sales および emp_bonus というリレーション名でPigにロードしました。
以下に示すように、COGROUP演算子を使用して、リレーション emp_sales および emp_bonus のレコード/タプルをキー* sno、*でグループ化します。
以下に示すように、 DUMP 演算子を使用してリレーション cogroup_data を確認します。
2つの関係の違いを計算する
次に、* DIFF()関数を使用して2つの関係の差を計算し、以下に示すように関係 *diff_data に保存します。
検証
以下に示すように、DUMP演算子を使用してリレーション diff_data を確認します。
たとえば、 sno を持つレコードを 1 として考えると、両方の関係((1、Robin、22,25000、sales)、(1、Robin、22,25000、 sales))。 したがって、* DIFF()関数の結果である *diff_data リレーションでは、 sno 1 の空のタプルを取得します。