gpt4 book ai didi

apache-spark - 如何处理 "WARN TaskSetManager: Stage contains a task of very large size"?

转载 作者:行者123 更新时间:2023-12-04 07:32:59 25 4
gpt4 key购买 nike

我使用 Spark 1.6.1。

我的 spark 应用程序读取了 10000 多个存储在 s3 中的 Parquet 文件。

val df = sqlContext.read.option("mergeSchema", "true").parquet(myPaths: _*)
myPathsArray[String]包含 10000 个 Parquet 文件的路径。每条路径都是这样 s3n://bucketname/blahblah.parquet
Spark 警告消息如下。

WARN TaskSetManager: Stage 4 contains a task of very large size (108KB). The maximum recommended task size is 100KB.



无论如何,Spark 已经设法运行并完成了这项工作,但我想这会减慢 Spark 处理工作的速度。

有人对这个问题有什么好的建议吗?

最佳答案

问题是您的数据集在分区之间分布不均匀,因此某些分区的数据比其他分区多(因此某些任务计算的结果更大)。

默认情况下,Spark SQL 使用 spark.sql.shuffle.partitions 假设 200 个分区属性(property)(见 Other Configuration Options):

spark.sql.shuffle.partitions (default: 200) Configures the number of partitions to use when shuffling data for joins or aggregations.



解决方案是 coalescerepartition读取 Parquet 文件后(以及执行操作之前)的数据集。

使用 explain或 Web UI 来查看执行计划。

该警告为您提供优化查询的提示,以便使用更有效的结果获取(请参阅 TaskSetManager )。

警告 TaskScheduler(在驱动程序上运行)将使用效率较低的方法获取结果值 IndirectTaskResult (正如您在 the code 中看到的那样)。

关于apache-spark - 如何处理 "WARN TaskSetManager: Stage contains a task of very large size"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43996615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com