Car*_*onp 5 apache-spark pyspark databricks
我一直在使用 SE 上发布的问题的出色答案来确定分区数量以及数据帧中分区的分布 需要了解 Spark Dataframe 中的分区详细信息
有人可以帮助我扩展答案以确定数据框的分区大小吗?
谢谢
调整分区大小是不可避免的,与调整分区数量相关相关。在此范围内至少需要考虑 3 个因素:
\n“良好”的高水平并行性非常重要,因此您可能希望拥有大量分区,从而导致分区大小较小。
\n然而,由于以下第三点 -分配开销,该数量存在上限。尽管如此,它仍然排名第一,所以假设如果您必须犯错误,请从高并行性方面开始。
\n一般来说,建议每个核心执行 2 到 4 个任务。
\n\n\n一般来说,我们建议集群中每个 CPU 核心执行 2-3 个任务。
\n
\n\n我们建议使用比集群中核心数量多三到四倍的分区
\n
如果分区大小非常大(例如> 1 GB),您可能会遇到垃圾收集、内存不足错误等问题,特别是当存在洗牌操作时,根据Spark 文档:
\n\n\n有时,您会收到 OutOfMemoryError 错误,不是因为您的 RDD 不适合内存,而是因为其中一项任务的工作集(例如 groupByKey 中的其中一个reduce 任务)太大。Spark\xe2\x80\x99s 混洗操作(sortByKey、groupByKey、reduceByKey、join 等)在每个任务中构建一个哈希表来执行分组,该哈希表通常很大......
\n
因此,大量分区(或小分区大小)的另一个优点就出现了。
\n分布式计算会带来开销,所以你也不能走极端。如果每个任务的执行时间少于 100 毫秒,则应用程序可能会因以下原因而产生显着的开销:
\n,在这种情况下,您可以降低并行级别并稍微增加分区大小。
\n带走
\n根据经验,人们通常尝试每个分区 100-1000MB,那么为什么不从这个开始呢?请记住,随着时间的推移,该数字可能需要重新调整。
\n| 归档时间: |
|
| 查看次数: |
11341 次 |
| 最近记录: |