【发布时间】:2016-07-28 02:25:01
【问题描述】:
我正在让一个程序生成一个 DataFrame,它将在上面运行类似的东西
Select Col1, Col2...
orderBy(ColX) limit(N)
但是,当我最终收集数据时,我发现如果我采用足够大的顶部 N 会导致驱动程序 OOM
另外一个观察是,如果我只做 sort 和 top,这个问题就不会发生。所以这只有在同时存在 sort 和 top 时才会发生。
我想知道为什么会发生这种情况?特别是,在这两种转换组合之下到底发生了什么? spark如何评估排序和限制的查询以及下面对应的执行计划是什么?
还只是好奇 Spark 处理 DataFrame 和 RDD 之间的排序和顶部不同吗?
编辑, 对不起,我不是说收集, 我最初的意思是当我调用任何动作来实现数据时,无论它是否收集(或任何将数据发送回驱动程序的动作)(所以问题绝对不在于输出大小)
【问题讨论】:
-
我建议您在问题中添加代码。 OOM 错误通常是驱动程序方面的。但是没有真正的代码很难说。
标签: apache-spark