Улей TEZ занимает очень много времени, чтобы выполнить запрос - PullRequest
0 голосов
/ 18 ноября 2018

Я новичок в Hive и Hadoop. У меня есть запрос, который занимает 10 минут, чтобы завершить запрос.

Размер данных составляет 10 ГБ. Статистика: Количество строк: 4457541 Размер данных: 1854337449 Базовая статистика: ЗАВЕРШЕНА Статистика столбцов: ЗАВЕРШЕНА

Разделение и группирование выполняются в таблице.

Как мне улучшить приведенный ниже запрос.

select * fromtbl1 where clmn='Abdul' and loc='IND' and TO_UNIX_TIMESTAMP(ts) > (UNIX_TIMESTAMP() - 5*60*60);
set hive.vectorized.execution.reduce.enabled=true;
set hive.tez.container.size=8192;
set hive.fetch.task.conversion = none;
set mapred.compress.map.output=true;
set mapred.output.compress=true;
set hive.fetch.task.conversion=none;


-----------+--+
|                                                                                                           Explain                                                                                                           |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--+
| Plan not optimized by CBO.                                                                                                                                                                                                  |
|                                                                                                                                                                                                                             |
| Stage-0                                                                                                                                                                                                                     |
|    Fetch Operator                                                                                                                                                                                                           |
|       limit:-1                                                                                                                                                                                                              |
|       Stage-1                                                                                                                                                                                                               |
|          Map 1                                                                                                                                                                                                              |
|          File Output Operator [FS_2973]                                                                                                                                                                                     |
|             compressed:false                                                                                                                                                                                                |
|             Statistics:Num rows: 49528 Data size: 24516360 Basic stats: COMPLETE Column stats: COMPLETE                                                                                                                     |
|             table:{"input format:":"org.apache.hadoop.mapred.TextInputFormat","output format:":"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat","serde:":"org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"}  |
|             Select Operator [SEL_2972]                                                                                                                                                                                      |
|                outputColumnNames:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]                                                                                                                          |
|                Statistics:Num rows: 49528 Data size: 24516360 Basic stats: COMPLETE Column stats: COMPLETE                                                                                                                  |
|                Filter Operator [FIL_2971]                                                                                                                                                                                   |
|                   predicate:((section = 'xysaa') and (to_unix_timestamp(ts) > (unix_timestamp() - 18000))) (type: boolean)                                                                                               |
|                   Statistics:Num rows: 49528 Data size: 24516360 Basic stats: COMPLETE Column stats: COMPLETE                                                                                                               |
|                   TableScan [TS_2970]                                                                                                                                                                                       |
|                      ACID table:true                                                                                                                                                                                        |
|                      alias:pp                                                                                                                                                                              |
|                      Statistics:Num rows: 4457541 Data size: 1854337449 Basic stats: COMPLETE Column stats: COMPLETE                                                                                                        |
|                                                                                                                                                                                                                             |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--+

Ни один из параметров не помог нам разрешить запрос за более короткий промежуток времени.

1 Ответ

0 голосов
/ 19 ноября 2018

Согласно плану, запрос выполняется на маппере, векторизация не включена.Попробуйте это:

set hive.vectorized.execution.enabled = true;
set hive.vectorized.execution.reduce.enabled=true;

Параллелизм Tune Mapper:

set tez.grouping.max-size=67108864;
set tez.grouping.min-size=32000000;

Воспользуйтесь этими настройками, чтобы увеличить количество работающих картографов.В идеале он должен работать без этой настройки:

set hive.tez.container.size=8192;

Еще одна рекомендация - заменить unix_timestamp() на UNIX_TIMESTAMP(current_timestamp).Эта функция не является детерминированной, и ее значение не является фиксированным для объема выполнения запроса, поэтому предотвращает надлежащую оптимизацию запросов - с версии 2.0 она устарела в пользу CURRENT_TIMESTAMP constant.

(UNIX_TIMESTAMP(current_timestamp) - 5*60*60)

Такжеваши файлы очень маленькие.размер раздела 200-500, 12 файлов на раздел, размер файла 20-50 МБ.К счастью, это ORC, и вы можете объединять файлы, используя ALTER TABLE CONCATENATE COMMAND .12 файлов - это не проблема, и вы, вероятно, не заметите улучшения при запросе одного раздела.

См. Также этот ответ: https://stackoverflow.com/a/48487306/2700344

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...