ApachePig-アーキテクチャ

Pigを使用してHadoopのデータを分析するために使用される言語は、 Pig Latin。これは、データに対してさまざまな操作を実行するための豊富なデータ型と演算子のセットを提供する高レベルのデータ処理言語です。

Pigを使用するプログラマーが特定のタスクを実行するには、プログラマーはPig Latin言語を使用してPigスクリプトを記述し、実行メカニズム(Grunt Shell、UDF、Embedded)のいずれかを使用してそれらを実行する必要があります。実行後、これらのスクリプトは、Pig Frameworkによって適用される一連の変換を経て、目的の出力を生成します。

内部的には、Apache Pigはこれらのスクリプトを一連のMapReduceジョブに変換するため、プログラマーの作業が簡単になります。ApachePigのアーキテクチャを以下に示します。

ApachePigコンポーネント

図に示すように、ApachePigフレームワークにはさまざまなコンポーネントがあります。主要なコンポーネントを見てみましょう。

パーサー

当初、Pigスクリプトはパーサーによって処理されます。スクリプトの構文をチェックし、型チェックやその他のその他のチェックを行います。パーサーの出力はDAG(有向非巡回グラフ)になります。これは、PigLatinステートメントと論理演算子を表します。

DAGでは、スクリプトの論理演算子はノードとして表され、データフローはエッジとして表されます。

オプティマイザ

論理計画(DAG)は、論理オプティマイザーに渡されます。論理オプティマイザーは、プロジェクションやプッシュダウンなどの論理最適化を実行します。

コンパイラ

コンパイラーは、最適化された論理プランを一連のMapReduceジョブにコンパイルします。

実行エンジン

最後に、MapReduceジョブがソートされた順序でHadoopに送信されます。最後に、これらのMapReduceジョブがHadoopで実行され、目的の結果が生成されます。

ピッグラテンデータモデル

Pig Latinのデータモデルは完全にネストされており、次のような複雑な非アトミックデータ型を使用できます。 map そして tuple。以下に示すのは、PigLatinのデータモデルの図式表現です。

原子

ピッグラテン語の単一の値は、データに関係なく、タイプはとして知られています。 Atom。文字列として保存され、文字列と数値として使用できます。int、long、float、double、chararray、およびbytearrayは、Pigのアトミック値です。データの一部または単純なアトミック値は、field

Example −「ラジャ」または「30」

タプル

順序付けられたフィールドのセットによって形成されるレコードはタプルと呼ばれ、フィールドは任意のタイプにすることができます。タプルは、RDBMSのテーブルの行に似ています。

Example −(ラジャ、30)

バッグ

バッグは、順序付けられていないタプルのセットです。言い換えると、タプルのコレクション(一意ではない)はバッグと呼ばれます。各タプルは、任意の数のフィールド(柔軟なスキーマ)を持つことができます。バッグは「{}」で表されます。これはRDBMSのテーブルに似ていますが、RDBMSのテーブルとは異なり、すべてのタプルに同じ数のフィールドが含まれている必要はなく、同じ位置(列)のフィールドが同じタイプである必要もありません。

Example − {(ラジャ、30)、(モハマド、45)}

バッグは関係のフィールドになることができます。その文脈では、それはとして知られていますinner bag

Example − {ラジャ、30、 {9848022338, [email protected],}}

地図

マップ(またはデータマップ)は、キーと値のペアのセットです。ザ・keychararray型である必要があり、一意である必要があります。ザ・valueどんなタイプでもかまいません。'[]'で表されます

Example − [名前#ラジャ、年齢#30]

関係

関係はタプルのバッグです。Pig Latinの関係は順序付けられていません(タプルが特定の順序で処理される保証はありません)。