我有一个数据框数组,我使用列“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
写入文件并将其读回另一个变量,它可以正常工作。
有谁知道这是为什么以及如何解决它。
这是因为show
需要collect
将所需数据集中到应用程序驱动程序,而写入文件(即使没有提供代码)也不会。