Apache spark apachespark中的数据分发
我是spark新手,有一个一般性问题。据我所知,整个文件必须在所有要处理的工作节点上可用。如果是这样,他们如何知道应该读取哪个分区?驱动程序控制分区,但驱动程序如何告诉他们读取哪个分区?每个RDD被划分为多个分区。为了计算每个分区,Spark将生成一个任务并将其分配给工作节点。当驱动程序向工作者发送任务时,它还指定该任务的分区ID 然后,工作者通过将RDD的迭代器链接回InputRDD并传递分区ID来执行任务。inpurdd确定输入的哪个部分对应于指定的分区id并返回数据Apache spark apachespark中的数据分发,apache-spark,Apache Spark,我是spark新手,有一个一般性问题。据我所知,整个文件必须在所有要处理的工作节点上可用。如果是这样,他们如何知道应该读取哪个分区?驱动程序控制分区,但驱动程序如何告诉他们读取哪个分区?每个RDD被划分为多个分区。为了计算每个分区,Spark将生成一个任务并将其分配给工作节点。当驱动程序向工作者发送任务时,它还指定该任务的分区ID 然后,工作者通过将RDD的迭代器链接回InputRDD并传递分区ID来执行任务。inpurdd确定输入的哪个部分对应于指定的分区id并返回数据 rddIter.nex
rddIter.next -> parentRDDIter.next -> grandParentRDDIter.next -> ... -> InputRDDIter.next
Spark尝试从靠近RDD的节点将数据读入RDD。由于Spark通常访问分布式分区数据,为了优化转换操作,它会创建分区来保存数据块
您的意思是工作人员首先获取所有分区,然后处理它们吗?