2016-10-06 20 views
0

ハイブhive.fetch.task.conversionパラメータを使用して、MapまたはMapReduceの代わりに簡単なクエリでFetchタスクを有効にすることができます。HiveのFetchタスクがマップ専用タスクよりも高速に動作するのはなぜですか?

いくつかの簡単な作業(たとえばselect * from table limit 10;)を実行しているときに、フェッチタスクがMapよりもはるかに高速に実行されている理由を説明してください。この場合、マップ専用のタスクは何を追加していますか?私の場合、パフォーマンスの差は20倍以上速いです。どちらのタスクもテーブルデータを読み込む必要がありますか?

答えて

1

FetchTask直接MapReduceのマップジョブ

<property> 
 
    <name>hive.fetch.task.conversion</name> 
 
    <value>minimal</value> 
 
    <description> 
 
    Some select queries can be converted to single FETCH task 
 
    minimizing latency.Currently the query should be single 
 
    sourced not having any subquery and should not have 
 
    any aggregations or distincts (which incurrs RS), 
 
    lateral views and joins. 
 
    1. minimal : SELECT STAR, FILTER on partition columns, LIMIT only 
 
    2. more : SELECT, FILTER, LIMIT only (+TABLESAMPLE, virtual columns) 
 
    </description> 
 
</property>

を低減呼び出すのに対し、また0.10から0.13にデフォルトで-1および> 0.14である他のパラメータhive.fetch.task.conversion.thresholdがあり、データをフェッチ1G(1073741824) これは、テーブルサイズが1Gを超える場合、フェッチタスクの代わりにMapreduceを使用することを示します。

more detail

+0

このリンクをお寄せいただきありがとうございます。 – leftjoin

+0

ur welcome .... –

関連する問題