Spark的数据集的limit函数创建一个只有1个分区的新数据集。为什么?

时间:2019-11-21 16:10:58

标签: apache-spark apache-spark-sql apache-spark-dataset

我刚刚意识到(经过一些经验测试),在limit上应用Dataset函数会产生一个只有一个分区的新Dataset。怎么会来?

我找不到任何相关问题。而且由于我不熟悉内部结构,因此在LocalLimitGlobalLimit上阅读源代码并没有提供任何见识。

这可能是有问题的,因为无论出于何种原因,人们可能想要使用limit(1000000)之类的东西。

1 个答案:

答案 0 :(得分:-1)

检查spark.sparkContext.defaultParallelism的值。如果未明确设置,它将使用可用核心数作为分区数的默认值。如果您要在单核计算机上进行测试并创建数据集,则会将其设置为1

如果您担心分区的数量,可以将spark.default.parallelism设置为更高的数量和/或在数据集上调用repartition()