1
我有一个计划采取产生,并会运行类似数据帧排序依据Spark中
Select Col1, Col2...
orderBy(ColX) limit(N)
但是一个数据帧,当我收集结束的数据,我觉得这是造成驱动程序到OOM,如果我拿足够大的顶部N
另一种观察是,如果我只是做排序和顶部,这个问题不会发生。所以这种情况只有在排序和排名同时出现时才会发生。
我想知道为什么会发生?特别是,这两种转换组合下面真正发生了什么? Spark如何通过排序和限制来评估查询,以及下面的相应执行计划是什么?
也只是好奇的火花处理排序和DataFrame和RDD之间的顶部不同?
编辑, 对不起,我不是故意的收集, 我原来只是意味着,当我打电话的任何行动兑现的数据,不管它是否被收集(或任何动作将数据发送回驱动程序)或不(所以,问题绝对不是在输出尺寸)
我建议你在你的问题中添加代码。对于OOM错误通常是驱动程序方面。但没有真正的代码很难说。 –