Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Spark:如何为本地文件系统使用SparkContext.textFile_Apache Spark - Fatal编程技术网

Apache spark Spark:如何为本地文件系统使用SparkContext.textFile

Apache spark Spark:如何为本地文件系统使用SparkContext.textFile,apache-spark,Apache Spark,我刚刚开始使用ApacheSpark(在Scala中,但语言与此无关)。我使用的是独立模式,我想处理来自本地文件系统的文本文件(因此没有像HDFS那样分发) 根据SparkContext中textFile方法的文档,它将 从本地文件系统HDFS读取文本文件(在所有 节点)或任何Hadoop支持的文件系统URI,并将其作为 字符串的RDD 我不清楚的是,整个文本文件是否可以复制到所有节点,或者输入数据是否已经分区,例如,如果使用4个节点和一个包含1000行的csv文件,则每个节点上有250行 我怀

我刚刚开始使用ApacheSpark(在Scala中,但语言与此无关)。我使用的是独立模式,我想处理来自本地文件系统的文本文件(因此没有像HDFS那样分发)

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

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

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


我怀疑每个节点都应该包含整个文件,但我不确定。

每个节点都应该包含整个文件。在这种情况下,本地文件系统将在逻辑上与HDFS无法区分,与此文件相关。

来自Spark的常见问题解答页面- 如果您不使用Hadoop/HDFS,“如果您在集群上运行,您将需要某种形式的共享文件系统(例如,在每个节点上的相同路径上安装NFS)。如果您有这种类型的文件系统,您可以在独立模式下部署Spark。”


文件://
前置到本地文件路径

正确的使用方法是使用三个斜杠。两个用于语法(就像http://),一个用于linux文件系统的装入点,例如sc.textFile(file:///home/worker/data/my_file.txt). 如果您使用的是本地模式,则仅文件就足够了。对于独立群集,必须在每个节点复制文件。请注意,文件的内容必须完全相同,否则spark将返回有趣的结果

Spark-1.6.1

Java-1.7.0\u 99

集群3(HDP)中的节点。

案例1:

Running in local mode local[n]
file:///..
文件:/…
从本地系统读取文件

案例2:

`--master yarn-cluster`
输入路径不存在:对于file://和file://

对于
文件://


java.lang.IllegalArgumentException:错误的FS:file://.. 应为:file://

添加“file://”uri以代替“file://”。这为我解决了这个问题。

没有提供参考,但假设这是正确的,因为您的声誉和经验。谢谢非常感谢。这是我的想法,但我很肯定在这种情况下。无论如何-如果您有一些问题,请告诉我。发件人:如果使用本地文件系统上的路径,则该文件也必须在工作节点上的同一路径上可访问。将文件复制到所有工作程序或使用网络安装的共享文件系统。在这种情况下,Spark如何并行处理文件?例如,如果Spark群集中有4个工作程序节点,您将整个文件的副本复制到每个工作程序节点上的同一文件夹中。spark会读取文件4次(每个工作节点读取一次)还是从4个工作节点中随机选取一个文件?@DavidGruzman有没有办法通过spark将数据通过网络分发到节点?(在k8s上运行)必须读取文件N次似乎很疯狂?在我的情况下不起作用。但是,它只使用了一个斜杠:
sc.textFile('file:/home/data/lines').count()