0

hive.fetch.task.conversionHiveパラメーターを使用して、Map または MapReduce の代わりに、単純なクエリのために Hive で Fetch タスクを有効にすることができます。

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

4

1 に答える 1

4

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 が 1G(1073741824) である別のパラメーターがhive.fetch.task.conversion.thresholdあります。これは、テーブル サイズが 1G より大きい場合、Fetch タスクの代わりに Mapreduce を使用することを示します。

もっと詳しく

于 2016-10-07T00:28:41.950 に答える