Spark shuffle write:为什么shuffle写入数据比从hdfs读取的输入数据大得多?

时间:2021-06-24 03:34:18

标签: apache-spark

我正在用非常简单的逻辑进行数据清理。

    val inputData= spark.read.parquet(inputDataPath)
    val viewMiddleTable = sdk70000DF.where($"type" === "0").select($"field1", $"field2", $field3)
      .groupBy($"field1", $"field2", $field3)
      .agg(count(lit(1)))

从 hdfs 读取 Parquet 数据,过滤,选择目标字段并按所有字段分组,然后计数。

当我检查 UI 时,发生了以下事情。

输入 81.2 GiB 随机写入 645.7 GiB

enter image description here

shuffle 怎么能写出比原来读到的数据大这么多的数据? 在这种情况下,它应该稍微扩展一下。 谁能解释一下?谢谢。

1 个答案:

答案 0 :(得分:0)

柱状和压缩的镶木地板文件的反序列​​化,意味着它们在内存或磁盘上的大小(溢出)扩展。这是 Spark 众所周知的一个方面 - 正如您现在坦率地观察自己一样。

相关问题