我正在尝试将1000个dataframe合并到一个df中,这个df以seq[org.apache.spark.sql.dataframe]的形式作为一个列表出现。所以我用了如下的方法,x是Dataframe的列表:
val y = x.reduce(_ union _)
但它需要永恒才能完成。有没有其他有效的方法来完成上述任务?可能是通过编码,甚至通过spark配置设置进行优化?非常感谢您的帮助。
slhcrj9b1#
首先,我会尝试“批处理”联合,有时这会有帮助:
dfs.grouped(50) .map(dfss => dfss.reduce(_ union _)) .reduce(_ union _)
如果这还不够,您可以尝试使用checkpooints:
dfs.grouped(50) .map(dfss => dfss.reduce(_ union _).checkpoint(true)) .reduce(_ union _)
如果Dataframe相当小,还可以使用 dfss.reduce(_ union _).coalesce(1) 在内部 map
dfss.reduce(_ union _).coalesce(1)
map
1条答案
按热度按时间slhcrj9b1#
首先,我会尝试“批处理”联合,有时这会有帮助:
如果这还不够,您可以尝试使用checkpooints:
如果Dataframe相当小,还可以使用
dfss.reduce(_ union _).coalesce(1)
在内部map