【发布时间】:2021-01-10 06:20:09
【问题描述】:
我有一个 8.9GB 的文本文件,我用它创建了一个 RDD 并将其导入 Spark。
textfile = sc.textFile("input.txt")
Spark 创建的分区数是 279,是输入文件的大小除以 32MB 默认的 HDFS 块大小得到的。我可以将参数传递给文本文件并要求更多数量的分区,但是,不幸的是,我的分区数量不能少于此默认值(例如 4)。
如果我将 4 作为参数传递,Spark 将忽略它并继续处理 279 个分区。
由于我的底层文件系统不是 HDFS,对我来说,将输入大小拆分为太多分区似乎非常低效。如何强制 Spark 使用更少的分区?如何将 Spark 中的默认 HDFS 块大小更改为更大的值?
【问题讨论】:
-
如果您更改并行度级别,也许您可以调整应用程序的性能。默认分区程序读取
spark.default.parallelism。尝试通过在配置文件中设置spark.default.parallelism属性来调整您的分区。该属性在配置文件中的定义是“:用户未设置时由join、reduceByKey和parallelize等转换返回的RDD中的默认分区数。 -
感谢您的回复。使用默认并行性,您不能低于 Spark 创建的默认分区数。您可以使用该参数来增加超出默认值的分区数。
标签: apache-spark partitioning large-files