微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spark RDD 分区到底怎么用?



 

1. 问题

对于给定的文件,应该使用多少个分区?

例如,假设我有一个10GB 文件,3个执行器,每个执行器有 2 个内核,3G内存。

我应该重新分配吗?

我应该使用多少个分区?

做出选择的更好方法是什么?

认重新分区么?

 

分析

Spark可以为一个RDD的每个分区运行一个并发任务,直到并发任务数等于集群中的内核总数(逻辑内核-thread 数量

 

例如:

 

rdd = sc.textFile("file.txt", 5)

 

   

上面这行代码将创建一个带有 5 个分区的名为 textFile 的RDD。 

假设您有一个具有3个内核的集群,并且假设每个分区需要处理5分钟。

对于上述带有5个分区的RDD, 3个分区进程将并行运行,因为有3个内核,而第4, 5个分区进程将在5分钟后处理,此时3个内核中的1个是空闲的。

  

 

结论

决定一个RDD中分区数量的最佳方法:是使分区数量等于集群中的核数量,这样所有分区都将并行处理,并且以最佳方式利用资源。

认情况下,每个rdd都没有分区。为了以最优的方式使用现有的集群资源并加快速度,我们必须考虑重新分区,以确保所有内核都被利用,并且所有分区数据尽量均匀分布。

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐