apache-spark - 为什么 groupByKey 操作总是有 200 个任务?

标签 apache-spark

每当我做 groupByKey在 RDD 上,它被分成 200 个作业,即使原始表非常大,例如2k 个分区和数千万行。

此外,该操作似乎卡在了最后两个需要很长时间计算的任务上。

为什么是200?如何增加它,它会有帮助吗?

最佳答案

此设置来自 spark.sql.shuffle.partitions ,这是分组时要使用的分区数,并且有 default setting of 200 ,但可以增加。这可能会有所帮助,它将取决于集群和数据。

需要很长时间的最后两个任务将是由于数据倾斜,这些键包含更多值。你能用吗reduceByKey/combineByKey而不是 groupByKey ,或者以不同的方式并行化问题?

关于apache-spark - 为什么 groupByKey 操作总是有 200 个任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31265927/

相关文章:

scala - 函数式编程原理

apache-spark - 如何在 Apache-Spark 中连接主从? (独立模式)

java - jsontostructs 到 spark 结构化流中的行

apache-spark - Spark能否将单个RDD分区的一部分存储在内存中,部分存储在磁盘上?

hadoop - 在 apache spark 中访问以下划线开头的文件

apache-spark - 默认情况下,spark 中的缓存内存限制是多少?

apache-spark - DAG 调度程序与 Spark 的催化剂

java - 从 S3 并行读取多个文件(Spark、Java)

java - 避免在 JavaPairRDD Apache Spark 中进行 Group By

apache-spark - 如何从PySpark将数据持久保存到Hive-避免重复