在我的火花代码中,我正在从数据帧中收集驱动程序上的一个小对象。我在控制台上看到以下错误消息。我正在程序中调用dataframe.take(1)
。
Total size of serialized results of 13 tasks (1827.6 MB) is bigger than spark.driver.maxResultSize (1024.0 MB)
这知道可以通过设置spark.driver.maxResultSize
参数来解决。但是我的问题是,当我正在收集的对象的大小小于MB时,为什么会有这么多的数据被拉入驱动程序。是否首先将所有对象序列化并拉入驱动程序,然后驱动程序选择其中一个(take(1)
)作为输出。
答案 0 :(得分:-2)
从上述问题来看,您似乎希望从数据框中获取1行,可以使用下面的代码来实现。
df.take(1)
但是,在这种情况下,当您执行df.take(1).collect()
时,收集将应用于take(1)
的结果,该结果是scala或python中的另一个集合(取决于您使用的语言。)>
还有,为什么要执行take(1)上的收集?
此致
Neeraj