| アパッチ・ピッグ | |
|---|---|
| 開発者 | Apacheソフトウェア財団、Yahoo!リサーチ |
| 初回リリース | 2008年9月11日 (2008年9月11日) |
| 安定版リリース | 0.18.0 / 2025年9月15日 (2025年9月15日) |
| オペレーティング·システム | Microsoft Windows、OS X、Linux |
| タイプ | データ分析 |
| ライセンス | Apacheライセンス2.0 |
| Webサイト | 豚 |
| リポジトリ | |
Apache Pig [ 1 ]は、 Apache Hadoop 上で実行されるプログラムを作成するための高水準プラットフォームです。このプラットフォームの言語はPig Latinと呼ばれています。[ 1 ] Pig は Hadoop ジョブをMapReduce、Apache Tez、またはApache Sparkで実行できます。[ 2 ] Pig Latin は、 Java MapReduce イディオム のプログラミングを抽象化し、リレーショナルデータベース管理システムのSQLに似た高水準な MapReduce プログラミング表記法にします。Pig Latin は、ユーザーがJava、Python、JavaScript、Ruby 、またはGroovy [ 3 ]で記述し、言語から直接呼び出すことができるユーザー定義関数(UDF)を使用して拡張できます。
Apache Pigは、もともと[ 4 ] 2006年頃にYahoo Researchで開発され、研究者が大規模データセットに対してMapReduceジョブをアドホックに作成・実行できるようにするために開発されました。2007年に[ 5 ] Apache Software Foundationに移管されました。
| バージョン | 当初のリリース日 | 最新バージョン | 発売日[ 6 ] | |
|---|---|---|---|---|
| サポート対象外:0.1 | 2008年9月11日 | 0.1.1 | 2008年12月5日 | |
| サポート対象外:0.2 | 2009年4月8日 | 0.2.0 | 2009年4月8日 | |
| サポート対象外:0.3 | 2009年6月25日 | 0.3.0 | 2009年6月25日 | |
| サポート対象外:0.4 | 2009年8月29日 | 0.4.0 | 2009年8月29日 | |
| サポート対象外:0.5 | 2009年9月29日 | 0.5.0 | 2009年9月29日 | |
| サポート対象外:0.6 | 2010年3月1日 | 0.6.0 | 2010年3月1日 | |
| サポート対象外:0.7 | 2010年5月13日 | 0.7.0 | 2010年5月13日 | |
| サポート対象外:0.8 | 2010年12月17日 | 0.8.1 | 2011年4月24日 | |
| サポート対象外:0.9 | 2011年7月29日 | 0.9.2 | 2012年1月22日 | |
| サポート対象外:0.10 | 2012年1月22日 | 0.10.1 | 2012年4月25日 | |
| サポート対象外:0.11 | 2013年2月21日 | 0.11.1 | 2013年4月1日 | |
| サポート対象外:0.12 | 2013年10月14日 | 0.12.1 | 2014年4月14日 | |
| サポート対象外:0.13 | 2014年7月4日 | 0.13.0 | 2014年7月4日 | |
| サポート対象外:0.14 | 2014年11月20日 | 0.14.0 | 2014年11月20日 | |
| サポート対象外:0.15 | 2015年6月6日 | 0.15.0 | 2015年6月6日 | |
| サポート対象外:0.16 | 2016年6月8日 | 0.16.0 | 2016年6月8日 | |
| サポート対象外:0.17 | 2017年6月19日 | 0.17.0 | 2017年6月19日 | |
| 最新バージョン:0.18 | 2025年9月15日 | 0.18.0 | 2025年9月25日 | |
伝説: サポートされていません サポートされている 最新バージョン プレビュー版 将来のバージョン | ||||
Pigプログラミング言語の命名に関しては、覚えやすく、綴りやすく、目新しさがあったため、任意に選択され、そのまま残りました。[ 7 ] [ 8 ] [ 9 ]
このプロジェクトに取り組んでいた研究者たちは、当初は単に「言語」と呼んでいたそうです。しかし、最終的に何か名前が必要になりました。ある研究者が思いつきで「Pig」という名前を提案し、それが定着しました。風変わりでありながら覚えやすく、綴りも簡単です。この名前は恥ずかしがり屋で滑稽だと批判する人もいますが、言語はPig Latin、シェルはGrunt、CPANのような共有リポジトリはPiggyBankなど、面白い命名法を生み出してくれました。
— Alan Gates、Daniel Dai、「What Is Pig?」、Programming Pig、第 2 版(2017 年 11 月)
以下は、 Pig Latin の 「単語数カウント」プログラムの例です。
input_lines = LOAD '/tmp/my-copy-of-all-pages-on-internet' AS ( line: chararray ); -- 各行から単語を抽出し、ピッグ バッグデータ型に入れてから、バッグ全体をフラット化して各行に 1 つの単語を取得しますwords = FOREACH input_lines GENERATE FLATTEN ( TOKENIZE ( line )) AS word; -- 空白だけの単語をフィルターしますfiltered_words = FILTER words BY word MATCHES '\\w+' ; -- 単語ごとにグループを作成しますword_groups = GROUP filtered_words BY word; -- 各グループ内のエントリをカウントしますword_count = FOREACH word_groups GENERATE COUNT ( filtered_words ) AS count , group AS word; -- レコードをカウント順に並べますordered_word_count = ORDER word_count BY count DESC ; ordered_word_countを'/tmp/number-of-words-on-internet'に保存します。上記のプログラムは、Hadoop クラスター内の複数のマシンに分散できる並列実行可能タスクを生成し、インターネット上のすべての Web ページなどのデータセット内の単語数をカウントします。
SQLと比較すると、Pig
一方、DBMSはデータのロード後はMapReduceシステムよりも大幅に高速であるものの、データベースシステムではデータのロードにかなり時間がかかるという主張もある。また、RDBMSは、列ストレージ、圧縮データの処理、効率的なランダムデータアクセスのためのインデックス、トランザクションレベルのフォールトトレランスといった機能を標準で提供しているという主張もある。[ 10 ]
Pig Latinは手続き型であり、パイプラインパラダイムに非常に自然にフィットしますが、SQLは宣言型です。SQLでは、ユーザーは2つのテーブルのデータを結合する必要があることを指定できますが、どの結合実装を使用するかは指定できません(SQLではJOINの実装を指定できますが、「多くのSQLアプリケーションでは、クエリ作成者がデータに関する十分な知識や適切な結合アルゴリズムを指定できるほどの専門知識を持っていない可能性があります。」)。Pig Latinでは、ユーザーはスクリプト実行時に使用する実装または実装の側面を複数の方法で指定できます。[ 11 ]実質的に、Pig Latinプログラミングはクエリ実行プランの指定に似ており、プログラマーがデータ処理タスクのフローを明示的に制御しやすくなります。[ 12 ]
SQLは単一の結果を生成するクエリを中心に設計されています。SQLはツリー構造を自然に処理しますが、データ処理ストリームを分割し、各サブストリームに異なる演算子を適用する組み込みのメカニズムは備えていません。ピグ・ラテン文字はパイプラインではなく、有向非巡回グラフ(DAG)を記述します。[ 11 ]
Pig Latinはパイプラインの任意の時点でユーザーコードを組み込むことができるため、パイプライン開発に役立ちます。SQLを使用する場合は、まずデータをデータベースにインポートし、その後でクレンジングと変換のプロセスを開始する必要があります。[ 11 ]
{{cite book}}: CS1 メンテナンス: 場所の発行元が見つかりません (リンク)