258

私のバックグラウンド - Hadoop の世界で 4 週間前。Cloudera の Hadoop VM を使用して、Hive、Pig、および Hadoop に少し手を加えました。Map-Reduce と GFS に関する Google の論文 ( PDF リンク) を読みました。

という事は承知しています-

  • Pig の言語 Pig Latin は (プログラマーの考え方に合うように) SQL からの移行であり、プログラミングの宣言型スタイルに似ており、Hive のクエリ言語は SQL によく似ています。

  • Pig は Hadoop の上に乗っており、原則として Dryad の上にも乗ることができます。私は間違っているかもしれませんが、Hive は Hadoop と密接に結びついています。

  • Pig Latin コマンドと Hive コマンドはどちらも、Map ジョブと Reduce ジョブにコンパイルされます。

私の質問 - 1 つ (Pig など) が目的を果たすことができる場合、両方を持つことの目標は何ですか。Pig が Yahoo! によって宣伝されているからでしょうか。Facebookのハイブ?

4

19 に答える 19

152

Yahoo! の Pig アーキテクトである Alan Gates のこの投稿をチェックしてください。Pig ではなく Hive のような SQL を使用する場合を比較しています。彼は、Pig のような手続き型言語 (対宣言型 SQL) の有用性と、データフロー設計者に対するその有用性について、非常に説得力のある主張をしています。

于 2010-07-29T06:56:18.713 に答える
57

Hiveは、SQLに慣れているコミュニティにアピールするように設計されています。その哲学は、さらに別のスクリプト言語は必要ないというものでした。Hiveは、ユーザーが選択した言語(SQL句に埋め込むことができる)でのmapおよびreduce変換スクリプトをサポートします。これは、SQLに慣れているアナリストや、Pythonでプログラミングしているデータマイニング担当者によってFacebookで広く使用されています。PigでのSQL互換性の取り組みはAFAIKで放棄されたため、2つのプロジェクトの違いは非常に明確です。

SQL構文をサポートするということは、Microstrategyなどの既存のBIツールと統合できることも意味します。HiveにはODBC/JDBCドライバー(これは進行中の作業です)があり、これにより近い将来にこれを実行できるようになります。また、そのような環境で一般的なドリルダウンクエリのサポートを可能にするインデックスのサポートも追加され始めています。

最後に、これは質問に直接関係するものではありません。Hiveは、分析クエリを実行するためのフレームワークです。その主な用途はフラットファイルをクエリすることですが、他のストアをクエリできない理由はありません。現在、Hiveを使用してHbase(ほとんどのRDBMSの内臓にあるようなKey-Valueストア)に格納されているデータをクエリできます。HadoopDBプロジェクトはHiveを使用してフェデレーションRDBMS層をクエリしています。

于 2010-08-05T07:23:47.030 に答える
38

私はこれが最も役に立ちました(しかし、それは1年前です) - http://yahoohadoop.tumblr.com/post/98256601751/pig-and-hive-at-yahoo

具体的には、Pig と Hive について、そして彼らが Yahoo でいつ、どこで採用されているかについて語っています。これは非常に洞察に満ちていることがわかりました。興味深いメモ:

データセットの増分変更/更新:

代わりに、新しい増分データに対して結合し、その結果を以前の完全結合の結果と一緒に使用するのが正しいアプローチです。これには数分しかかかりません。標準的なデータベース操作は、Pig Latin でこの段階的な方法で実装できるため、Pig はこのユース ケースに適したツールになります。

ストリーミング経由で他のツールを使用する場合:

また、Pig とストリーミングの統合により、研究者は、小規模なデータ セットで既にデバッグした Perl または Python スクリプトを取得し、それを巨大なデータ セットに対して実行することが容易になります。

データ ウェアハウジングに Hive を使用する場合:

どちらの場合も、リレーショナル モデルと SQL が最適です。実際、データ ウェアハウジングは、SQL の歴史を通じて、SQL のコア ユース ケースの 1 つです。アナリストが使用したいタイプのクエリとツールをサポートするための適切な構造があります。そして、現場のツールとユーザーの両方ですでに使用されています。

Hadoop サブプロジェクトの Hive は、Hadoop の SQL インターフェイスとリレーショナル モデルを提供します。Hive チームは、ODBC などのインターフェイスを介して BI ツールと統合する作業を開始しました。

于 2011-11-22T20:04:31.700 に答える
30

「dezyre」記事のナットシェルでのPig Vs Hiveの比較をご覧ください

Hiveは、次の点でPIGより優れています: パーティション、サーバー、Web インターフェイス、および JDBC/ODBC のサポート。

いくつかの違い:

  1. Hive構造化データに最適で、 PIG半構造化データに最適です

  2. Hiveレポートに使用され、PIGプログラミングに使用されます

  3. Hive宣言型 SQLとして使用され、PIG手続き型言語として使用されます。

  4. Hiveはパーティションをサポートしますが、PIGはサポートしません

  5. Hiveはオプションのthriftベースのサーバーを起動できますが、PIGは起動できません

  6. Hiveは事前にテーブルを定義する ( schema ) + スキーマ情報をデータベースに格納 & PIGはデータベースの専用メタデータを持たない

  7. HiveはAvroをサポートしていませんが、PIGはサポートしています。編集: Hive は Avro をサポートし、serde を org.apache.hadoop.hive.serde2.avro として指定します。

  8. Pigは、外部結合を実行するための追加の COGROUP機能もサポートしていますが、Hive はサポートしていません。しかし、Hive と PIGの両方が、動的に結合、並べ替え、並べ替えを行うことができます。

于 2015-10-26T18:45:56.400 に答える
17

あなたの質問に対する本当の答えは、それらは独立したプロジェクトであり、中央で調整された目標はなかったということだと思います。彼らは早い段階で異なる空間にいましたが、両方のプロジェクトが拡大するにつれて、時間とともに重なり合うように成長しました.

Hadoop O'Reilly の本からの言い換え:

Pig: 非常に大規模なデータセットを探索するためのデータフロー言語および環境。

Hive: 分散データ ウェアハウス

于 2010-07-28T19:08:16.850 に答える
12

pig/hive クエリでも同様の結果を得ることができます。主な違いは、クエリの理解/作成/作成へのアプローチにあります。

Pig は、データの流れを作成する傾向があります。それぞれの処理を行う小さなステップ
Hive は、SQL に似た言語でデータを操作できるため、RDBMS からの変換ははるかに簡単です (Pig は、以前の経験のない人にとっては簡単です)。 SQLで)

また、Hive の場合、このデータを操作するための優れたインターフェイス (HUE の場合は Beeswax または Hive Web インターフェイス) を使用でき、データ (スキーマなど) に関する情報のメタストアも提供されることにも注意してください。データに関する中心的な情報。

私はさまざまなクエリにHiveとPigの両方を使用します(クエリをより速く/簡単に記述できる場所を使用します。ほとんどの場合、アドホッククエリでこの方法を使用します)-同じデータを入力として使用できます。しかし現在、私は蜜蝋を使って多くの仕事をしています。

于 2010-07-28T20:27:20.057 に答える
11

ハイブ対豚-

Hive は、SQL に精通したユーザーや、Tableu/Microstrategy/SQL インターフェイスを備えたその他のツールや言語などのその他のツールを許可する SQL インターフェイスです。

PIG は ETL パイプラインに似ており、変数の宣言、ループ、反復、条件文などの段階的なコマンドを使用します。

複雑なステップバイステップのロジックを書きたいときは、Hive QL よりも Pig スクリプトを書くことを好みます。必要なデータを取得するための単一の SQL を快適に記述できる場合は、Hive を使用します。ハイブの場合、クエリを実行する前にテーブルを定義する必要があります(RDBMSで行うように)

両方の目的は異なりますが、内部ではどちらも同じことを行い、map reduce プログラムに変換します。また、Apache オープン ソース コミュニティは、両方のプロジェクトにますます多くの機能を追加しています。

于 2015-12-24T17:55:30.977 に答える
8

このリンクで PIG と HIVE の違いを読んでください。

http://www.aptibook.com/Articles/Pig-and-hive-advantages-disadvantages-features

すべての側面が与えられます。どちらを選択するか迷っている場合は、その Web ページを参照する必要があります。

于 2013-09-05T16:39:25.170 に答える
7
  1. Pig-latin はデータ フロー スタイルであり、ソフトウェア エンジニアにより適しています。SQLは、SQLに慣れている分析担当者により適しています。複雑なタスクの場合、ハイブの場合、中間データを格納する一時テーブルを手動で作成する必要がありますが、豚の場合は必要ありません。

  2. Pig-latin は、複雑なデータ構造 (小さなグラフなど) に適しています。タプルのコレクションである DataBag と呼ばれる pig のデータ構造があります。複数のタプルを含むメトリクスを計算する必要がある場合があります (タプル間に隠しリンクがあり、この場合はグラフと呼びます)。この場合、UDF を記述して、複数のタプルを含むメトリックを計算するのは非常に簡単です。もちろんハイブでもできますが、ブタほど便利ではありません。

  3. 私の意見では、Hive よりも pig で UDF を書く方がはるかに簡単です。

  4. Pig はメタデータをサポートしていません (またはオプションであり、将来的には hcatalog を統合する可能性があります)。ハイブには、データベースに格納されたテーブルのメタデータがあります。

  5. Pig スクリプトをローカル環境でデバッグすることはできますが、Hive でそれを行うのは困難です。その理由はポイント 3 です。ローカル環境でハイブ メタデータをセットアップする必要があり、非常に時間がかかります。

于 2013-07-15T23:37:30.960 に答える
4

リンクから: http://www.aptibook.com/discuss-technical?uid=tech-hive4&question=What-kind-of-datawarehouse-application-is-suitable-for-Hive ?

Hive は完全なデータベースではありません。Hadoop と HDFS の設計上の制約と制限により、Hive でできることは制限されます。

Hive は、データ ウェアハウス アプリケーションに最も適しています。

1) 比較的静的なデータが分析され、

2) 速い応答時間は必要ありません。

3) データが急速に変化していない場合。

Hive は、OLTP、オンライン トランザクション処理に必要な重要な機能を提供しません。これは、OLAP ツールであるオンライン分析処理に近いものです。そのため、Hive は、洞察やレポートなどのために大規模なデータ セットが維持およびマイニングされるデータ ウェアハウス アプリケーションに最適です。

于 2013-09-29T06:00:25.543 に答える
4

Hadoop意味で使用している場合、膨大なデータ処理を試みていることを意味します。データ処理の最終目標は、データからコンテンツ/レポートを生成することです。

そのため、内部的には 2 つの主要なアクティビティで構成されています。

1) データ処理の読み込み

2) コンテンツを生成し、レポートに使用する /etc..

Loading /Data Processing -> Pig が役に立ちます。

これは ETL として役立ちます (Pig スクリプトを使用して ETL 操作を実行できます)。

結果が処理されると、Hive を使用して、処理された結果に基づいてレポートを生成できます。

Hive:ウェアハウス処理用に hdfs の上に構築されています。

pig から生成された処理済みコンテンツからハイブを使用してアドホック レポートを簡単に生成できます。

于 2014-05-29T03:45:03.283 に答える
4

Pig または Hive を使用するための追加のリンクを次に示します。

http://aws.amazon.com/elasticmapreduce/faqs/#hive-8

http://www.larsgeorge.com/2009/10/hive-vs-pig.html

于 2011-08-03T09:10:39.583 に答える
4

両方の非常に高いレベルの概要を簡単に説明すると、次のようになります。

1) Pig は Hadoop 上のリレーショナル代数です

2) Hive は Hadoop 上の SQL です (Pig の 1 レベル上)

于 2014-10-04T07:56:05.493 に答える
3

PIG では不可能で、HIVE ができることは何ですか?

パーティショニングは HIVE を使用して実行できますが、PIG では実行できません。これは、出力をバイパスする方法です。

HIVE では不可能で、PIG ができることは何ですか?

位置参照 - フィールド名がない場合でも、最初のフィールドは $0、2 番目のフィールドは $1 など、位置を使用して参照できます。

もう 1 つの基本的な違いは、値を書き込むために PIG にはスキーマが必要ありませんが、HIVE にはスキーマが必要なことです。

JDBC などを使用して任意の外部アプリケーションから HIVE に接続できますが、PIG では接続できません。

注: どちらも HDFS (hadoop 分散ファイル システム) 上で実行され、ステートメントは Map Reduce プログラムに変換されます。

于 2015-03-29T04:32:59.743 に答える