RDD分区

RDD Partitioning

假设我们在 HDFS 上有一个文件有 3 个块(每个 64mb)。当我们使用具有 3 个分区的相同文件创建 RDD 时,集群上的每个节点(假设集群有 3 个数据节点)将具有重复的文件内容(一个来自 hdfs 的块和一个 RDD 分区)

在 HDFS 中,块是随机分布的(默认情况下,如果你放置文件的客户端不是集群的一部分)所以你不能确定每个节点都有 1 个块,除非你有副本 3。在这个情况下,每个区块将被放置在三个节点中。

关于 Spark,默认情况下,Spark 尝试从靠近它的节点将数据读入 RDD,并尝试将 rdd 分区分布到整个集群。

您的假设并不总是正确的,您必须考虑 HDFS 块分布与副本放置策略、spark 执行程序等。但是,如果您在 HDFS 中有副本 3 并且您有一个 Spark 集群集群中每个节点有 3 个工作人员。