多表join,报内存问题

【详述】多表join,报内存问题,在hive上join的结果是六百多万数据
【背景】be内存设置16G,6个节点,join后的数据是600多万,理论上资源肯定够用
【业务影响】
【StarRocks版本】例如:2.0
【集群规模】例如:3fe(1 follower+2observer)+6be(fe与be混部)
【机器信息】CPU虚拟核/内存/网卡,例如:16C/64G/万兆
【附件】
explain结果.txt (32.4 KB)
报错内容:

1赞

当前查询的并行度设置的多大 show variables like ‘%parallel_fragment_exec_instance_num%’;

use databasename; show data;看下dwd.dwd_oc_classorder,dwd_oc_receipt 这两个表多大。

这个参数设置的是8

分别为372M、1G

all_test这张表多大,执行下set exec_mem_limit = 4G;将内存限制调整为4G,执行下多个表join的那个,看可以跑出来不



all_test表比较小,因为我只把其他几张表join后的主键id存放这张表,在跟另外一张表join,证明没有数据爆炸

这四个表的分桶键,分区分桶数是一样的么?如果是可以将这四个表更改为colocate 表进行colocate join

这几张join的表,数据量加起来也就3G左右,join后数据量也没有膨胀的很厉害,另外我只是count操作,也没有select * ,但是就无法join,join就报内存问题,感觉这个不科学呀,这个是不是设计上的问题呢


图中最下面这个报错是BE内存超出限制,这个是由某个参数设置的,还是指的是BE机器本身的内存,
因为图中错误是说超出内存限制51G,我们单个BE机器本身的内存是64G,这个错误是不是说超出了机器本身最大可用内存