Spark:如何将SparkContext.textFile用于本地文件系统

her*_*man 13 apache-spark

我刚刚开始使用Apache Spark(在Scala中,但语言无关紧要).我正在使用独立模式,我想要从本地文件系统处理文本文件(因此没有像HDFS那样分发).

根据该textFile方法的文档SparkContext,它将

从HDFS读取文本文件,本地文件系统(在所有节点上都可用)或任何支持Hadoop的文件系统URI,并将其作为字符串的RDD返回.

对我来说不清楚的是,是否可以将整个文本文件复制到所有节点,或者如果输入数据已经被分区,例如,如果使用4个节点和1000行的csv文件,则每个节点上有250行.

我怀疑每个节点应该有整个文件,但我不确定.

Dav*_*man 9

每个节点应包含一个完整的文件.在这种情况下,就该文件而言,本地文件系统在逻辑上与HDFS无法区分.

  • 来自[外部数据集的编程指南](http://spark.apache.org/docs/1.2.1/programming-guide.html#external-datasets):_如果使用本地文件系统上的路径,该文件还必须可以在工作节点上的相同路径上访问.将文件复制到所有工作者或使用网络安装的共享文件系统._ (2认同)
  • 在这种情况下,Spark如何并行处理文件?例如,如果spark集群中有4个工作节点,并且您将整个文件的副本复制到每个工作节点上的同一文件夹中.spark会不会读取文件4次(每个工作一次)或只是随机从4个工作节点中选择一个文件? (2认同)