使用Spark-SQL时,如何估算Spark Shuffle所需的内存和磁盘?
SQL:
按键从table_a group中选择key,collect_set(value);
如果table_a有N行,K行,每行是b字节, 我可以使用C内核,有没有办法估算spark shuffle所需的内存和磁盘?
spark版本:2.1.0,使用基于排序的随机播放。
答案 0 :(得分:0)
不对键和值分布做任何假设,最坏的情况是:
K - 1
仅包含单个值的键。N - K + 1
个唯一值的1个密钥。假设散列函数的属性成立,并且密钥在核心之间均匀分布,则会产生内存
(((N - K + 1) / C + N - K + 1) * bytes) * serialization_efficiency
对于负载最高的内核,峰值内存要求应与之成比例(如果数据可以从磁盘加载):
(N - K + 1) * bytes