2011-09-19 4 views

答えて

6

一般に、min/max/countなどの任意の種類の集計では、MapReduceジョブが必要になります。おそらく、あなたのためにすべてを説明するつもりはありません。

ハイブは、多くのRDBMSのスタイルで、EXPLAINキーワードを持ち、HiveクエリがMapReduceジョブにどのように変換されるかを概説します。両方のサンプル・クエリーで「explain」を実行し、その背後で何をしようとしているのかを見てください。

1

select * from tablename;

HDFSのファイルから生データを読み込むだけで、MapReduceを使用しなくてもはるかに高速です。

+1

大きなファイルの場合は、すべてのノードから並列に読み込む必要があります。ハイブはMRなしでそれをしますか? – ernesto

-1

プロパティは、(FETCH)プロパティでmapreduceオーバーヘッドの遅延を最小化する最適化手法です。

SELECT、LIMIT、FETCHクエリを実行すると、このプロパティをスキップしてmapreduceをスキップし、FETCHタスクを使用します。

このプロパティの値は、none,minimal(デフォルト)、moreの3つです。我々はテーブル名から選択*のようなクエリを起動するたびに

1

は、ハイブは、データファイルを読み込み、任意のアグリゲーション(最小/最大/カウントなど)を実行せずに全体のデータを取得します。 mapreduceタスクではなく、FetchTaskと呼びます。

これはハイブの最適化手法でもあります。 hive.fetch.task.conversionプロパティ(つまり、FETCHタスク)は、マップ削減オーバーヘッドの待ち時間を最小限に抑えることができます。私たちは、Hadoopのファイル読んでいるよう

これ

は次のとおりです。のHadoopのfs -catファイル名を

しかし、私たちはテーブル名から選択COLNAMESを使用する場合、それは抽出するために必要として、それはマップ-削減の仕事を必要としロードするファイルから解析することによって各行の '列'を作成します。

関連する問題