当驱动程序执行" sc.textFile"为什么我们需要文件出现在每个节点上?如果我们将它复制到每个节点,那么spark如何处理重复数据的执行?
答案 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节点访问。