Apache spark 在Spark中调用dataframe.collect时拉入驱动程序的数据量异常
在我的spark代码中,我从数据帧收集驱动程序上的一个小对象。我在控制台上看到以下错误消息。我正在调用Apache spark 在Spark中调用dataframe.collect时拉入驱动程序的数据量异常,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,在我的spark代码中,我从数据帧收集驱动程序上的一个小对象。我在控制台上看到以下错误消息。我正在调用dataframe。在我的程序中取(1) Total size of serialized results of 13 tasks (1827.6 MB) is bigger than spark.driver.maxResultSize (1024.0 MB) 要知道这可以通过设置spark.driver.maxResultSizeparam来解决。但我的问题是,当我收集的对象小于1 MB时
dataframe。在我的程序中取(1)
Total size of serialized results of 13 tasks (1827.6 MB) is bigger than spark.driver.maxResultSize (1024.0 MB)
要知道这可以通过设置
spark.driver.maxResultSize
param来解决。但我的问题是,当我收集的对象小于1 MB时,为什么会有这么多数据被拉入驱动程序。在这种情况下,所有对象首先被序列化并拉入驱动程序,然后驱动程序选择其中一个(take(1)
)作为输出 从上面的问题来看,您似乎希望从数据帧中提取1行,这可以使用下面的代码实现
df.take(1)
但是,当您执行df.take(1).collect()时,将对take(1)
的结果应用collect,这是scala或python中的另一个集合(取决于您使用的语言)
另外,您为什么要执行“按需付费”(1)
问候,
尼拉吉