2017-08-17 69 views
0

我有一个Spark独立群集,有2个工作节点和1个主节点。Spark独立群集无法读取本地文件系统中的文件

使用spark-shell,我能够从本地文件系统的文件中读取数据,然后做了一些转换并将最终的RDD保存在/ home/output中(假设) RDD已成功保存,但仅在一个工人节点和主节点上只有_SUCCESS文件在那里。

现在,如果我想从/ home/output读取这个输出数据,我没有收到任何数据,因为它在master上获得0数据,然后我假设它没有检查其他工作节点。

如果有人能够说明为什么Spark没有从所有工作节点读取或者Spark用于从工作节点读取数据的机制是什么,那将是非常棒的。

scala> sc.textFile("/home/output/") 
res7: org.apache.spark.rdd.RDD[(String, String)] = /home/output/ MapPartitionsRDD[5] at wholeTextFiles at <console>:25 

scala> res7.count 
res8: Long = 0 

回答

0

SparkContext即SC默认指向HADOOP_CONF_DIR.This一般设置为hdfs://,这意味着当你说sc.textFile("/home/output/")它搜索的文件/目录为hdfs:///home/output,而你的情况是不存在的HDFS。 file://指向本地文件系统

尝试sc.textFile("file:///home/output"),因此明确告诉Spark从本地文件系统读取。

+0

我试过,但没有工作。目前的情况是,master有_SUCCESS文件的输出文件夹,worker节点在“output”文件夹中有剩余的部分文件。 现在,当我阅读这个输出文件夹时,它给了我空白,我认为它只读取了主文件。 –

+0

可以请你提供初始步骤,使用你写的/ home/output? – thinkinbee

0

您应该将该文件放在具有相同路径和名称的所有工作机器上。

+0

我不能每次都这样做,因为生成的这些文件将成为某些程序的输出。 –

+0

或者yiu可以把文件放到HDFS中。 – Robin

相关问题