开发者社区> 问答> 正文

在Spark中调用dataframe.collect时,会将不寻常的数据量提取到驱动程序中

在我的spark代码中,我从Dataframe中收集驱动程序上的一个小对象。我在控制台上看到以下错误消息。我在我的项目中调试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.maxResultSizeparam 来解决。但我的问题是,当我收集的对象大小小于MB时,为什么这么多数据被拉入驱动程序。是否所有对象首先被序列化并被拉入驱动程序,然后驱动程序选择其中一个(take(1))作为输出。

apache-spark apache-spark-sql

展开
收起
社区小助手 2018-12-12 11:29:35 3449 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    从上面的问题看来,您似乎想从您的数据框中取一行,可以使用下面的代码实现。

    df.take(1)
    但是,当你df.take(1).collect()在那种情况下执行时,将take(1)在scala或python 的结果中应用collect (取决于你使用的是哪种语言)。

    另外,为什么你想进行收集(1)?

    2019-07-17 23:20:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载