2016-01-08 94 views
0

在spark中是否可以使用SFTP读取文件?在Spark中通过SFTP读取文件

我尝试使用val df = sc.textFile("sftp://user:[email protected]/home/user/sample.csv")

但提示以下错误:

scala> df.count 
java.io.IOException: No FileSystem for scheme: sftp 
    at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2584) 
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2591) 
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:91) 
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2630) 

有没有办法读取火花使用SFTP文件?

+1

Dunno。不管怎样,最好将它下载到火花外面,因为这样你就不必将SFTP凭证硬编码到这个不安全并且会使维护变得困难的工作中。一旦你将它下载到火花之外,只需将路径传递到作业中并将其作为普通文本文件加载即可。 – jbrown

回答

1

看起来这是不可能的(Spark 1.6,最大轮廓hadoop-2.6)。 Hadoop 2.8中将引入SFTP支持(请参阅HADOOP-5732)。

+0

现在我们可以使用spark-sftp连接器来做到这一点 – sag