如何估算Spark Shuffle所需的内存和磁盘?

时间:2017-08-27 17:39:40

标签: apache-spark apache-spark-sql spark-dataframe shuffle

使用Spark-SQL时,如何估算Spark Shuffle所需的内存和磁盘?

SQL:

  

按键从table_a group中选择key,collect_set(value);

如果table_a有N行,K行,每行是b字节, 我可以使用C内核,有没有办法估算spark shuffle所需的内存和磁盘?

spark版本:2.1.0,使用基于排序的随机播放。

1 个答案:

答案 0 :(得分:0)

不对键和值分布做任何假设,最坏的情况是:

  • K - 1仅包含单个值的键。
  • 包含N - K + 1个唯一值的1个密钥。

假设散列函数的属性成立,并且密钥在核心之间均匀分布,则会产生内存

(((N - K + 1) / C  + N - K + 1) * bytes) * serialization_efficiency

对于负载最高的内核,峰值内存要求应与之成比例(如果数据可以从磁盘加载):

(N - K + 1) * bytes