为什么Spark需要本地文件出现在每个节点上?

时间:2016-04-12 09:50:05

标签: apache-spark

当驱动程序执行" sc.textFile"为什么我们需要文件出现在每个节点上?如果我们将它复制到每个节点,那么spark如何处理重复数据的执行?

2 个答案:

答案 0 :(得分:1)

从火花的角度来看,没有重复

在驱动程序上,它将决定您需要多少个分区并相应地拆分文件。在驱动程序上,您将了解有分区,如

a.file -    0 to 1000
a.file - 1001 to 2000
a.file - 2001 to 3000

稍后,每个执行程序都会有一个文件路径和要读取的特定块。他们不知道你不使用共享文件系统。唯一重要的是拥有文件的路径并知道在哪里阅读它。 可能会发生最终只有一个执行器,但这一切都以同样的方式发生。只有一个执行程序将具有文件位置和要读取的块。一个接一个地处理整个文件。

它与HDFS完全相同(我假设复制因子为1),但对于HDFS,它实际上只是一个只有一个文件的目录(坐在特定的机器上)。并且所有执行程序都转到该目录。当复制因子大于1时,那么从spark角度来看,它仍然只是一个目录,但请求将来到不同的节点 - 那里是文件的副本。

答案 1 :(得分:0)

使用hdfs文件系统而不是本地文件系统,可从所有spark节点访问。