标签: spark-shuffle

什么是火花溢出(磁盘和内存)?

根据文档:

洗牌溢出(内存)是内存中洗牌数据的反序列化形式的大小。

Shuffle 溢出(磁盘)是磁盘上数据的序列化形式的大小。

我对shuffle的理解是这样的:

  1. 每个执行器都会获取其上的所有分区,并将它们哈希分区为 200 个新分区(这 200 个可以更改)。每个新分区都与一个稍后将转到的执行程序相关联。例如:For each existing partition: new_partition = hash(partitioning_id)%200; target_executor = new_partition%num_executors其中%是模运算符,num_executors 是集群上执行程序的数量。
  2. 这些新分区被转储到其初始执行器的每个节点的磁盘上。每个新分区稍后都会被 target_executor 读取
  3. 目标执行器选取各自的新分区(在生成的 200 个分区中)

我对shuffle操作的理解是否正确?

您能帮我将 shuffle 溢出(内存)和 shuffle 溢出(磁盘)的定义放在 shuffle 机制的上下文中(如果正确的话,上面描述的)?例如(也许):“shuffle溢出(磁盘)是上面提到的第2点中发生的部分,其中200个分区被转储到各自节点的磁盘上”(我不知道这样说是否正确;只是举个例子)

apache-spark apache-spark-sql pyspark spark-ui spark-shuffle

4
推荐指数
1
解决办法
9834
查看次数