Spark是否支持从主节点或工作节点访问数据?

时间:2015-10-02 08:32:52

标签: apache-spark rdd

是否可以使用master或worker中的数据创建RDD?我知道有一个选项SC.textFile()可以从本地系统(驱动程序)获取数据,同样我们可以使用" master:file://input.txt" ?因为我正在访问远程群集,我的输入数据量很大,无法登录到远程群集。

我不是在寻找S3HDFS。如果还有其他选择,请建议。

3 个答案:

答案 0 :(得分:0)

RDD中的数据始终由Workers控制,无论是在内存中还是位于数据源中。要从Workers进入驱动程序中检索数据,您可以在RDD上调用collect()

您应该将文件放在HDFS或所有节点都可用的文件系统上。

答案 1 :(得分:0)

执行此操作的最佳方法是使用sc.textFile。为此,您需要在群集中的所有节点上提供该文件。 Spark通过spark {submit --files选项提供了一种简单的方法。只需传递选项,然后传递您需要复制的文件的路径。

答案 2 :(得分:0)

您可以通过创建hadoop配置来访问hadoop文件。

import org.apache.spark.deploy.SparkHadoopUtil
import java.io.{File, FileInputStream, FileOutputStream, InputStream}

val hadoopConfig = SparkHadoopUtil.get.conf
val fs = org.apache.hadoop.fs.FileSystem.get(new java.net.URI(fileName), hadoopConfig)
val fsPath = new org.apache.hadoop.fs.Path(fileName)

一旦获得路径,就可以复制,删除,移动或执行任何操作。