是否可以使用master或worker中的数据创建RDD?我知道有一个选项SC.textFile()
可以从本地系统(驱动程序)获取数据,同样我们可以使用" master:file://input.txt
" ?因为我正在访问远程群集,我的输入数据量很大,无法登录到远程群集。
我不是在寻找S3
或HDFS
。如果还有其他选择,请建议。
答案 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)
一旦获得路径,就可以复制,删除,移动或执行任何操作。