在我的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
从上面的问题看来,您似乎想从您的数据框中取一行,可以使用下面的代码实现。
df.take(1)
但是,当你df.take(1).collect()在那种情况下执行时,将take(1)在scala或python 的结果中应用collect (取决于你使用的是哪种语言)。
另外,为什么你想进行收集(1)?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。