2017-03-13 4 views
2

私はHadoopへの新しいハチですので、この基本的な質問で私を助けてください。MapReduceジョブのための基準は、Hiveで起動する

ハイブで"select * from table where <condition>;"を実行すると、基礎となるHDFSファイルにフィルタリングを適用する必要があるため、mapreduceが起動することが分かります。

しかし、私は、Hiveにwhere句を指定しないでselect * from tableを実行すると、mapreduceが起動することがあり、時にはそうではありません。私の理解は、理想的には、フィルタリング条件がないのでmapreduceを起動してはならないということです。

誰かが私に説明してくれることがあります。なぜなら、Hiveでmapreduceが起動することはほとんどありません。

ありがとうございました。

答えて

1

これはhive.fetch.task.conversionnoneに設定されていない場合、単純なSELECTクエリがフェッチタスクの代わりに、MapReduceのタスクを実行することになる2つのハイブ特性

  • hive.fetch.task.conversion
  • hive.fetch.task.conversion.threshold

によって制御されます。

tableのファイルの合計サイズがhive.fetch.task.conversion.thresholdに設定されたしきい値のしきい値を超えた場合、mapreduceタスクがトリガーされます。

デフォルト値hive.fetch.task.conversion.thresholdは、Hive-0.14.0以降では1073741824バイト(1GB)です。

関連する問題