问题现象
参数
one-pass hash group
的适用场景。
处理方法
one-pass hash group
适用于源表行数较多(相对于
group buffer
),且
group by
列
中不同值占比较多的情况。当前实现中包含三种划分方式:
RR
、原始
hash
、
one-p
ass hash
,它们的评估原则如下:
采样得到的
DistinctRatio < 10
(不同值占比小于
10%
)时,使用
RR
划分(需
要二次聚集),否则使用
hash
划分。预期第一次聚集的结果集比较小,二次
聚集代价较低。
根据源表的行数和
group buffer
的大小,确定使用原始的
hash
划分,还是
one
pass hash
划分:
1.
当
group buffer
能够容纳源表数据的
50%
时,使用原始的
hash
划分。这时
会将数据分为
dop
份,每个线程一份,预期各线程进行聚集时不会发生多
趟;
2.
否则使用
one-pass hash
划分,这时会将数据分为(原始数据行数
/
子线
程哈希表能够容纳的行数
* 4
)个文件分片。(乘以
4
是为了防止一个文件
分片聚集时发生多趟)。
说明
如果数据量相对于
group buffer
较大,而采样结果显示不同值较多,就会使用
one-pass has
h
划分。
问题
2
GBase 8a MPP Cluster FAQ FAQ
文档版本(2021-04-02) 南大通用数据技术股份有限公司
21
参数
one-pass hash group
的算法选择。
回答
针对特定的数据,以下两个原因可能导致算法选择上不是最优:
数据量大时,采样结果不准确;
选择原始
hash group
或
one-pass hash group
时,只参考了数据量,没有考虑数
据特征。