欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

不要将大型RDD中所有元素发送到Driver端

  如果你的Driver内存容量不能容纳一个大型RDD里面的所有数据,那么不要做以下操作:

val values = iteblogVeryLargeRDD.collect()

  Collect 操作会试图将 RDD 里面的每一条数据复制到Driver上,如果你Driver端的内存无法装下这些数据,这时候会发生内存溢出和崩溃。

  相反,你可以调用take或者 takeSample来限制数据大小的上限。或者对你RDD中的数据使用过滤或抽样操作。

  同样,要谨慎使用下面的操作,除非你能确保数据集小到足以存储在内存中:

countByKey
countByValue
collectAsMap
  关于collectAsMap函数的使用可以参见Spark函数讲解:collectAsMap

  如果你确实需要将 RDD 里面的大量数据保存在内存中,你可以将 RDD 成一个文件或者把RDD导出到一个容量足够大的数据库中。

本博客文章除特别声明,全部都是原创!
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【不要将大型RDD中所有元素发送到Driver端】(https://www.iteblog.com/archives/1364.html)
喜欢 (4)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!