我有一个大表(1tb的数据),需要与一个较小的表(100k条记录)连接起来
SELECT st.id
FROM small_table st
LEFT JOIN large_table lt
ON st.id = lt.id
在上面的场景中,我无法控制哪个表必须缓存到内存中。我尝试过使用mapjoin、streamtable提示,也尝试过使用条件任务大小、小tbale大小等参数。因为小表位于连接的最左侧,所以它不会缓存到内存中
有没有办法控制需要缓存的表
注意:我不能更改表格位置或代码:
也不是在这里。。。
…这里也不是。。。
使用的参数:
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;
暂无答案!
目前还没有任何答案,快来回答吧!