Apache-pig-overview
提供:Dev Guides
Apache Pig-概要
Apache Pigとは何ですか?
Apache PigはMapReduceを抽象化したものです。 これは、データフローとしてそれらを表す大きなデータセットを分析するために使用されるツール/プラットフォームです。 通常、ブタは Hadoop で使用されます。 Apache Pigを使用して、Hadoopですべてのデータ操作操作を実行できます。
データ分析プログラムを作成するために、Pigは Pig Latin と呼ばれる高水準言語を提供します。 この言語は、プログラマーがデータの読み取り、書き込み、および処理のための独自の機能を開発できるさまざまな演算子を提供します。
*Apache Pig* を使用してデータを分析するには、プログラマはPig Latin言語を使用してスクリプトを記述する必要があります。 これらのスクリプトはすべて、内部的にMapおよびReduceタスクに変換されます。 Apache Pigには、Pig Latinスクリプトを入力として受け入れ、それらのスクリプトをMapReduceジョブに変換する *Pig Engine* というコンポーネントがあります。
Apache Pigが必要な理由
Javaがあまり得意ではないプログラマーは、特にMapReduceタスクの実行中に、Hadoopでの作業に苦労していました。 Apache Pigは、このようなプログラマーすべてにとって恩恵です。
- Pig Latin を使用すると、プログラマはJavaで複雑なコードを入力することなくMapReduceタスクを簡単に実行できます。
- Apache Pigは*マルチクエリアプローチ*を使用しているため、コードの長さが短縮されます。 たとえば、Javaで200行のコード(LoC)を入力する必要がある操作は、Apache Pigでわずか10 LoCと入力するだけで簡単に実行できます。 最終的に、Apache Pigは開発時間をほぼ16倍短縮します。
- Pig Latinは* SQLに似た言語*であり、SQLに精通していればApache Pigを簡単に習得できます。
- Apache Pigは、結合、フィルター、順序付けなどのデータ操作をサポートする多くの組み込み演算子を提供します。 さらに、MapReduceにないタプル、バッグ、マップなどのネストされたデータ型も提供します。
豚の特徴
Apache Pigには次の機能があります-
- 豊富な演算子セット-結合、ソート、ファイラーなどの操作を実行するための多くの演算子を提供します。
- プログラミングの容易さ-Pig LatinはSQLに似ており、SQLが得意であれば、Pigスクリプトを簡単に記述できます。
- 最適化の機会-Apache Pigのタスクは実行を自動的に最適化するため、プログラマは言語のセマンティクスのみに集中する必要があります。
- 拡張性-ユーザーは既存の演算子を使用して、データの読み取り、処理、書き込みを行う独自の機能を開発できます。
- * UDF’s-Pigは、Javaなどの他のプログラミング言語で*ユーザー定義関数*を作成し、それらをPigスクリプトに呼び出したり、埋め込む機能を提供します。
- すべての種類のデータを処理-Apache Pigは、構造化および非構造化の両方のあらゆる種類のデータを分析します。 結果をHDFSに保存します。
Apache Pig対MapReduce
以下は、Apache PigとMapReduceの主な違いです。
Apache Pig | MapReduce |
---|---|
Apache Pig is a data flow language. | MapReduce is a data processing paradigm. |
It is a high level language. | MapReduce is low level and rigid. |
Performing a Join operation in Apache Pig is pretty simple. | It is quite difficult in MapReduce to perform a Join operation between datasets. |
Any novice programmer with a basic knowledge of SQL can work conveniently with Apache Pig. | Exposure to Java is must to work with MapReduce. |
Apache Pig uses multi-query approach, thereby reducing the length of the codes to a great extent. | MapReduce will require almost 20 times more the number of lines to perform the same task. |
There is no need for compilation. On execution, every Apache Pig operator is converted internally into a MapReduce job. | MapReduce jobs have a long compilation process. |
Apache Pig対SQL
Apache PigとSQLの主な違いを以下にリストします。
Pig | SQL |
---|---|
Pig Latin is a *procedural *language. | SQL is a* declarative *language. |
In Apache Pig,* schema *is optional. We can store data without designing a schema (values are stored as $01, $02 etc.) | Schema is mandatory in SQL. |
The data model in Apache Pig is* nested relational*. | The data model used in SQL is flat relational. |
Apache Pig provides limited opportunity for Query optimization. | There is more opportunity for query optimization in SQL. |
上記の違いに加えて、Apache Pig Latin-
- パイプラインでの分割を許可します。
- 開発者は、パイプラインのどこにでもデータを保存できます。
- 実行計画を宣言します。 *ETL(抽出、変換、およびロード)機能を実行するオペレーターを提供します。
Apache Pig Vs Hive
Apache PigとHiveの両方がMapReduceジョブの作成に使用されます。 また、場合によっては、HiveはApache Pigと同様の方法でHDFSで動作します。 次の表に、Apache PigをHiveと区別する重要なポイントをいくつかリストしました。
Apache Pig | Hive |
---|---|
Apache Pig uses a language called* Pig Latin*. It was originally created at Yahoo. | Hive uses a language called HiveQL. It was originally created at Facebook. |
Pig Latin is a data flow language. | HiveQL is a query processing language. |
Pig Latin is a procedural language and it fits in pipeline paradigm. | HiveQL is a declarative language. |
Apache Pig can handle structured, unstructured, and semi-structured data. | Hive is mostly for structured data. |
Apache Pigのアプリケーション
Apache Pigは、一般に、データサイエンティストがアドホック処理とクイックプロトタイピングを含むタスクを実行するために使用します。 Apache Pigが使用されます-
- Webログなどの巨大なデータソースを処理するため。
- 検索プラットフォームのデータ処理を実行します。
- 時間依存データのロードを処理するため。
Apache Pig –歴史
*2006* では、Apache Pigは、特にすべてのデータセットでMapReduceジョブを作成および実行するために、Yahooの研究プロジェクトとして開発されました。 *2007* では、Apache PigはApacheインキュベーターを介してオープンソース化されました。 *2008* では、Apache Pigの最初のリリースがリリースされました。 *2010* で、Apache PigはApacheトップレベルプロジェクトとして卒業しました。