1
Spark在RDD中创建逻辑分区。我有两个问题: -同一节点上的分区处理?
1)Google上的每一处都有人说,分区有助于并行处理,其中每个分区可以在单独的节点上处理。我的问题是如果我有多核心 机器,我不能在同一节点处理分区?
2)说我从文件系统读取文件,并创建一个具有四个分区的RDD。现在每个分区可以进一步分为RDD吗?例如: -
firstRDD=sc.textFile("hdfs://...")
//firstRDD contains four partition which are processed on four diff nodes
secondRDD=firstRDD.filter(someFunction);
// Now will each node create separate secondRDD which will have further paritions ?
你说'..将由最初读取它们的相同执行程序评估'如果在4个节点上处理4个部分,那么将有4个执行程序不是1对吗?另外,当你'但是,你可能会重新分区......'你的意思是一旦在RDD中创建了一个分区,它将不会被默认地进一步分区,直到我们明确地做到这一点为止? –
是,如果在1个分区中读取4个节点,每个分区包含4个执行程序。根据转换(即聚合),一个分区中的数据可以分成更多分区。例如,阅读一个大的gzip文件,添加几列并在没有聚合的情况下对数据进行清理,然后将其写出来会给单个执行者带来整个工作负载,除非您明确告诉它重新分区。 – Garren
https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-rdd-partitions.html –