Apache-pig-architecture
Apache Pig-アーキテクチャ
Pigを使用してHadoopでデータを分析するために使用される言語は、 Pig Latin と呼ばれます。 これは、データに対してさまざまな操作を実行するための豊富なデータ型と演算子のセットを提供する高レベルのデータ処理言語です。
Pigを使用してプログラマーが特定のタスクを実行するには、Pig Latin言語を使用してPigスクリプトを作成し、実行メカニズム(Grunt Shell、UDF、Embedded)のいずれかを使用して実行する必要があります。 実行後、これらのスクリプトは、Pig Frameworkによって適用される一連の変換を経て、目的の出力を生成します。
内部的に、Apache Pigはこれらのスクリプトを一連のMapReduceジョブに変換するため、プログラマーの仕事が簡単になります。 Apache Pigのアーキテクチャを以下に示します。
Apache Pigコンポーネント
図に示すように、Apache Pigフレームワークにはさまざまなコンポーネントがあります。 主要なコンポーネントを見てみましょう。
パーサ
最初、Pigスクリプトはパーサーによって処理されます。 スクリプトの構文をチェックし、型チェック、およびその他のさまざまなチェックを行います。 パーサーの出力は、DAG(有向非巡回グラフ)になります。これは、Pig Latinステートメントと論理演算子を表します。
DAGでは、スクリプトの論理演算子はノードとして表され、データフローはエッジとして表されます。
オプティマイザ
論理計画(DAG)は論理オプティマイザーに渡され、プロジェクションやプッシュダウンなどの論理最適化が実行されます。
コンパイラ
コンパイラーは、最適化された論理プランを一連のMapReduceジョブにコンパイルします。
実行エンジン
最後に、MapReduceジョブがソートされた順序でHadoopに送信されます。 最後に、これらのMapReduceジョブはHadoopで実行され、目的の結果が生成されます。
豚ラテンデータモデル
Pig Latinのデータモデルは完全にネストされており、 map や tuple などの複雑な非原子データ型を使用できます。 以下に示すのは、Pig Latinのデータモデルの図表示です。
Atom
データに関係なく、Pig Latinの単一の値は、 Atom として知られています。 文字列として保存され、文字列と数値として使用できます。 int、long、float、double、chararray、およびbytearrayは、Pigのアトミック値です。 データの一部または単純なアトミック値は、*フィールド*と呼ばれます。
例-「raja」または「30」
タプル
順序付けられたフィールドのセットによって形成されるレコードはタプルと呼ばれ、フィールドは任意のタイプにできます。 タプルは、RDBMSのテーブルの行に似ています。
例-(ラジャ、30)
Bag
バッグは、順序付けられていないタプルのセットです。 言い換えると、タプル(一意でない)のコレクションはバッグとして知られています。 各タプルには、任意の数のフィールドを含めることができます(柔軟なスキーマ)。 バッグは「\ {}」で表されます。 RDBMSのテーブルと似ていますが、RDBMSのテーブルとは異なり、すべてのタプルに同じ数のフィールドが含まれている必要はなく、同じ位置(列)のフィールドが同じタイプである必要もありません。
例-\ {(Raja、30)、(Mohammad、45)}
バッグはリレーションのフィールドになることができます。その文脈では、*インナーバッグ*として知られています。
例-\ {Raja、30、 \ {9848022338、[email protected]、} }
Map
マップ(またはデータマップ)は、キーと値のペアのセットです。 key はchararray型である必要があり、一意である必要があります。 *値*はどのタイプでもかまいません。 「[]」で表されます
例-[name#Raja、age#30]
関係
リレーションはタプルの袋です。 Pig Latinの関係は順序付けられていません(タプルが特定の順序で処理されるという保証はありません)。