この投稿は、ApachePigの演算子に関するものです。Apache Pigを使用すると、Javaの知識がなくても複雑なデータ変換を記述できるため、Javaの知識が非常に重要になります。 。オペレーターに進む前に、PigとPig Latinとは何か、およびそれらを操作できるさまざまなモードを簡単に見てみましょう。
Apache Pigとは何ですか?
Apache Pigは、HadoopとMapReduceプラットフォームを使用して大規模なデータセットをクエリするための高レベルの手続き型言語です。これはJavaパッケージであり、JVMで実行されている任意の言語実装からスクリプトを実行できます。これは、反復プロセスで大いに使用されます。
SQLの例の日付データ型
Apache Pigは、分散データセットへのSQLのようなクエリを可能にすることで、Hadoopの使用を簡素化し、大量のデータを迅速かつ効果的に処理するための複雑なタスクを作成できるようにします。 Pigの最も優れた機能は、Join、Group、Aggregateなどの多くのリレーショナル機能をサポートしていることです。
PigはETLツールのように聞こえ、ETLツールに共通する多くの機能を備えていることを私は知っています。ただし、ETLツールに対するPigの利点は、多数のサーバーで同時に実行できることです。
Apache Pig Latinとは何ですか?
Apache Pigは、Map Reduceを介してより単純な手続き型言語の抽象化を作成し、Apache Pig Latinと呼ばれるHadoopアプリケーション用のより構造化されたクエリ言語(SQL)のようなインターフェイスを公開します。したがって、個別のMap Reduceアプリケーションを作成する代わりに、Apacheで単一のスクリプトを作成できます。自動的に並列化され、クラスター全体に分散されるPigLatin。簡単に言うと、Pig Latinは、入力を受け取り、出力を生成する一連の単純なステートメントです。入力データと出力データは、バッグ、マップ、タプル、およびスカラーで構成されています。
Apache Pig実行モード:
ApachePigには2つの実行モードがあります。
ローカルモード
「ローカルモード」では、ソースデータはコンピュータシステムのローカルディレクトリから選択されます。 MapReduceモードは、「pig –xlocal」コマンドを使用して指定できます。
MapReduceモード:
PigをMapReduceモードで実行するには、HadoopクラスターとHDFSインストールにアクセスする必要があります。 MapReduceモードは、「pig」コマンドを使用して指定できます。
Apache Pigオペレーター:
Apache Pig Operatorsは、HadoopとMapReduceプラットフォームを使用して大規模なデータセットをクエリするための高レベルの手続き型言語です。 Pig Latinステートメントは、関係を入力として受け取り、別の関係を出力として生成する演算子です。これらの演算子は、PigLatinがデータを操作するために提供する主要なツールです。それらを使用すると、並べ替え、グループ化、結合、射影、およびフィルタリングによって変換できます。
コマンドを実行するために2つのファイルを作成しましょう。
「first」と「second」という名前の2つのファイルがあります。最初のファイルには、user、url、idの3つのフィールドが含まれています。
2番目のファイルには、urlとratingの2つのフィールドが含まれています。これら2つのファイルはCSVファイルです。
Apache Pig演算子は、次のように分類できます。 リレーショナルおよび診断。
関係演算子:
関係演算子は、PigLatinがデータを操作するために提供する主なツールです。並べ替え、グループ化、結合、投影、フィルタリングによってデータを変換できます。このセクションでは、基本的な関係演算子について説明します。
負荷:
LOAD演算子は、ファイルシステムまたはHDFSストレージからPigリレーションにデータをロードするために使用されます。
この例では、 Load演算子は、ファイル「first」からデータをロードして、リレーション「loading1」を形成します。フィールド名はuser、url、idです。
FOREACH:
この演算子は、データの列に基づいてデータ変換を生成します。リレーションからフィールドを追加または削除するために使用されます。 FOREACH-GENERATE操作を使用して、データの列を操作します。
FOREACH結果:
フィルタ:
この演算子は、条件に基づいてリレーションからタプルを選択します。
この例では、 条件「id」が8より大きい場合、「loading1」からレコードをフィルタリングしています。
フィルター結果:
参加:
JOIN演算子は、共通のフィールド値に基づいて、2つ以上の関係の内部等結合結合を実行するために使用されます。 JOIN演算子は、常に内部結合を実行します。内部結合はnullキーを無視するため、結合の前にそれらをフィルターで除外することは理にかなっています。
この例では、 「loading1」と「loading2」の列「url」に基づいて2つのリレーションを結合します。
参加結果:
注文者:
Order Byは、1つ以上のフィールドに基づいてリレーションをソートするために使用されます。 ASCおよびDESCキーワードを使用して、昇順または降順で並べ替えを行うことができます。
以下の例では、loading2のデータを評価フィールドで昇順で並べ替えています。
結果による注文 :
特徴:
Distinctは、リレーション内の重複するタプルを削除します。次のような入力ファイルを取得します。 amr、crap、8 そして amr、myblog、10 ファイル内で2回。このファイルのデータに個別に適用すると、重複するエントリが削除されます。
Windows用の最高のJavaIDE
異なる結果:
お店:
ストアは、結果をファイルシステムに保存するために使用されます。
ここで節約しています ローディング3 データをという名前のファイルに 保管 HDFSで。
STORE結果:
グループ:
GROUP演算子は、同じグループキー(キーフィールド)を持つタプルをグループ化します。グループキーに複数のフィールドがある場合、キーフィールドはタプルになります。それ以外の場合は、グループキーと同じタイプになります。 GROUP操作の結果は、グループごとに1つのタプルを含むリレーションです。
この例では、 グループth
e列のURLによる「loading1」の関係。
グループ結果:
コグループ:
COGROUPはGROUP演算子と同じです。読みやすくするために、プログラマーは通常、1つの関係のみが関係する場合はGROUPを使用し、複数の関係が関係する場合はCOGROUPを使用します。
この例では、両方のリレーションのURLフィールドで「loading1」と「loading2」をグループ化します。
COGROUP結果:
クロス:
CROSS演算子は、2つ以上の関係の外積(デカルト積)を計算するために使用されます。
load1とloading2に外積を適用します。
クロス結果:
制限:
LIMIT演算子は、出力タプルの数を制限するために使用されます。指定された出力タプルの数がリレーション内のタプルの数以上の場合、出力にはリレーション内のすべてのタプルが含まれます。
制限結果:
スプリット:
SPLIT演算子は、ある式に基づいて、リレーションの内容を2つ以上のリレーションに分割するために使用されます。式に記載されている条件によって異なります。
load2を2つの関係xとyに分割します。 load2によって作成されたxリレーションには、評価が8より大きいフィールドが含まれ、yリレーションには、レーティングが8以下のフィールドが含まれます。
質問がありますか?コメント欄にご記入ください。折り返しご連絡いたします。
関連記事: