Pig、Hiveの抽象化とは何かについての基本的な理解があります。しかし、Hive、Pig、またはネイティブ マップの削減が必要なシナリオについて明確な考えがありません。
基本的に、Hive は構造化処理用であり、Pig は非構造化処理用であると指摘する記事をいくつか読みました。ネイティブ マップの縮小が必要になるのはいつですか? Pig または Hive を使用しても解決できないが、ネイティブの map reduce では解決できないいくつかのシナリオを指摘できますか?
Pig、Hiveの抽象化とは何かについての基本的な理解があります。しかし、Hive、Pig、またはネイティブ マップの削減が必要なシナリオについて明確な考えがありません。
基本的に、Hive は構造化処理用であり、Pig は非構造化処理用であると指摘する記事をいくつか読みました。ネイティブ マップの縮小が必要になるのはいつですか? Pig または Hive を使用しても解決できないが、ネイティブの map reduce では解決できないいくつかのシナリオを指摘できますか?
多くのネストされた if .. else .. 構造を持つ複雑な分岐ロジックは、Pangoolを使用できる構造化データを処理するために、標準の MapReduce で実装する方が簡単かつ迅速です。また、JOIN なども簡素化されます。また、Standard MapReduce を使用すると、データ処理フローに必要な MapReduce ジョブの数を最小限に抑えるための完全な制御が可能になり、パフォーマンスにつながります。しかし、コーディングして変更を導入するには、より多くの時間が必要です。
Apache Pig は構造化データにも適していますが、その利点は、データの BAG (キーでグループ化されたすべての行) を操作できることです。次のようなものを実装する方が簡単です。
Hive はアドホック クエリに適していますが、その主な利点は、データを格納および分割するエンジンを備えていることです。ただし、そのテーブルは Pig または標準の MapReduce から読み取ることができます。
もう 1 つ、Hive と Pig は階層データの操作にはあまり適していません。
ハイブ
長所:
Sql のようなデータベースの人はそれが大好きです。構造化データの優れたサポート。現在、構造のようなデータベース スキーマとビューをサポートしています。同時マルチ ユーザー、マルチ セッション シナリオをサポートしています。より大きなコミュニティ サポート。Hive、Hiver サーバー、Hiver Server2、Impala、Centry は既に
短所: データが大きくなりすぎてパフォーマンスが低下し、メモリ オーバー フローの問題が発生します。それで多くを行うことはできません。階層データは課題です。構造化されていないデータには udf のようなコンポーネントが必要です 複数の手法の組み合わせは、ビッグデータなどの場合に UTDF を使用した動的部分の悪夢になる可能性があります
Pig: 長所: 優れたスクリプト ベースのデータ フロー言語。
短所:
非構造化データには udf のようなコンポーネントが必要 大きなコミュニティ サポートではない
MapReudce: 長所: 「結合機能を実現するのが難しい」という意見には同意しないでください。実装したい結合の種類を理解していれば、数行のコードで実装できます。ほとんどの場合、MR の方がパフォーマンスが向上します。階層データの MR サポートは、特にツリーのような構造を実装するのに最適です。データのパーティショニング/インデックス作成の制御が向上します。ジョブ連鎖。
短所: より良いパフォーマンスを得るために API をよく知る必要があるなど コード / デバッグ / メンテナンス
ここに大きな比較があります。すべてのユース ケース シナリオを指定します。
PIG と HIVE を使用してできることはすべて、MR を使用して実現できます (ただし、時間がかかる場合もあります)。PIG と HIVE は下に MR/SPARK/TEZ を使用します。したがって、MR で実行できることはすべて、Hive と PIG で実行できる場合とできない場合があります。