从远程服务器上运行的Apache Zeppelin将文件传输到HDFS

时间:2017-06-21 18:18:38

标签: scala hadoop apache-spark hdfs apache-zeppelin

我有一个在远程服务器上运行的Apache Zeppelin实例,我正在使用Scala通过Spark解释器与它进行通信。

我想将存储在该服务器目录中的csv文件传输到HDFS(Hadoop),该文件也位于远程服务器上。

我无法访问服务器上的任何配置文件,我无法安装任何内容,而且我只能在Zeppelin中创建命令。

我试过使用标准

sc.textFile("file:///test.csv") 

语句,但它返回以下错误:

  

org.apache.spark.SparkException:作业因阶段失败而中止:阶段19.0中的任务0失败4次,最近失败:阶段19.0中失去的任务0.3(TID 64,10.244.79.7):java.io。 FileNotFoundException:文件文件:/test.csv不存在

我被告知我之所以收到此错误,是因为Spark无法看到我的Zeppelin文件系统。我不知道如何启用这样的东西。

任何建议都会非常有用。

2 个答案:

答案 0 :(得分:1)

您可以尝试:

sc.textFile("hdfs://DNS:PORT/test.csv")

其中DNS是Hadoop集群的名称节点的地址,PORT是HDFS正在侦听的端口,其中默认值取决于Hadoop分发。共同价值是8020。您可以在参数core-site.xmlfs.default.name中的fs.defaultFS中查看,具体取决于您的Hadoop版本。

示例请求可能如下所示:

sc.textFile("hdfs://address:8020/test.csv")

答案 1 :(得分:1)

如果您尝试在zeppelin中读取本地文件,请确保将该文件放在zeppelin文件夹(zeppelin安装文件夹)中,因为zeppelin无法访问zeppelin文件夹之外的文件。