Как оптимизировать запрос по двум большим таблицам? - PullRequest
0 голосов
/ 04 декабря 2018

Запрос в Impala на кластере Cloudera:

В нем участвуют две таблицы: одна 500 миллионов, а другая 900 миллионов

запрос:

create table Citz0063.${VERSION}_pas_prev_ah partitioned by (date_pull) stored as parquet as
select pas.acct_num,  max(ah.date_pull) as prev_ah_date_pull,pas.date_pull
from Citz0063.v201810_pas_test pas
inner join Citz0063.v201810_ah01 ah on ah.id_acct=pas.acct_num and cast(ah.date_pull as int)<=cast(pas.date_pull as int)
group by pas.date_pull,pas.acct_num;

Результат имеет400 миллионов записей.

Во время выполнения запроса я заметил, что в плане 13 этапов, и на одном из этапов создается таблица из 14 миллиардов строк.enter image description here

Большое спасибо.Любые предложения / подсказки приветствуются.

...