加入大量数据帧

问题描述 投票:0回答:1

我有一个数据框数组,我使用列“id”连接来创建一个更大的数据帧

val dfArray = Array.fill[DataFrame](n)(spark.emptyDataFrame)
dfArray(0) = df_0
dfArray(1) = df_1
...
dfArray(n) = df_n

val output = dfArray.reduceLeft(_.join(_, Seq("id")))

如果我尝试在output.show上执行任何操作(例如:output),则需要很长时间。有时会因OOM错误而崩溃。但是,如果我将output写入文件并将其读回另一个变量,它可以正常工作。

有谁知道这是为什么以及如何解决它。

scala apache-spark join out-of-memory
1个回答
2
投票

这是因为show需要collect将所需数据集中到应用程序驱动程序,而写入文件(即使没有提供代码)也不会。

© www.soinside.com 2019 - 2024. All rights reserved.