Как кэшировать самую левую таблицу в памяти для левого внешнего соединения в улье - PullRequest
1 голос
/ 23 марта 2019

У меня есть большая таблица (1Tb данных), которую необходимо объединить с меньшей таблицей (100k записей)

SELECT st.id
FROM small_table st
LEFT JOIN large_table lt
        ON st.id = lt.id

В приведенном выше сценарии я не могу контролировать, какую таблицу нужноЯ пытался использовать подсказки MAPJOIN, STREAMTABLE, а также пытался использовать такие параметры, как условный размер задачи, небольшой размер таблицы и т. д. Поскольку маленькая таблица находится в самой левой части объединения, она не кэшируется в памяти

Есть ли способ управления таблицей, которую необходимо кэшировать

Примечание: я не могу изменить позиции таблицы или код:
Ни здесь ...

enter image description here

... ни здесь ...

enter image description here

Используемые параметры:

set hive.execution.engine=tez; 
set hive.tez.container.size=4096; 
set hive.merge.mapredfiles=true; 
set tez.shuffle-vertex-manager.min-src-fraction=0.25; 
set tez.shuffle-vertex-manager.max-src-fraction=0.75; 
set hive.exec.dynamic.partition.mode=nonstrict; 
set tez.am.resource.memory.mb=3200 ; 
set tez.am.java.opts=-server -Xmx3200m -Djava.net.preferIPv4Stack=true -XX:+UseNUMA -XX:+UseParallelGC -XX:+UseConcMarkSweepGC ; 
SET hive.auto.convert.join=true; 
set hive.auto.convert.join.noconditionaltask.size=288435456;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...