我刚刚意识到(经过一些经验测试),在limit
上应用Dataset
函数会产生一个只有一个分区的新Dataset
。怎么会来?
我找不到任何相关问题。而且由于我不熟悉内部结构,因此在LocalLimit
和GlobalLimit
上阅读源代码并没有提供任何见识。
这可能是有问题的,因为无论出于何种原因,人们可能想要使用limit(1000000)
之类的东西。
答案 0 :(得分:-1)
检查spark.sparkContext.defaultParallelism
的值。如果未明确设置,它将使用可用核心数作为分区数的默认值。如果您要在单核计算机上进行测试并创建数据集,则会将其设置为1
。
如果您担心分区的数量,可以将spark.default.parallelism
设置为更高的数量和/或在数据集上调用repartition()
。