我是Scala和HDFS的新手:
我只是想知道我能够从Scala代码读取本地文件但是如何从HDFS读取:
import scala.io.source
object ReadLine {
def main(args:Array[String]) {
if (args.length>0) {
for (line <- Source.fromLine(args(0)).getLine())
println(line)
}
}
Run Code Online (Sandbox Code Playgroud)
在论证中我已经过了hdfs://localhost:9000/usr/local/log_data/file1..但是它的给出FileNotFoundException错误我肯定错过了一些东西..任何人都可以帮助我吗?
scala.io.sourceapi无法读取HDFS.Source用于从本地文件系统读取.
火花
如果你想hdfs从那时开始阅读,我建议spark你使用你必须使用的地方sparkContext.
val lines = sc.textFile(args(0)) //args(0) should be hdfs:///usr/local/log_data/file1
Run Code Online (Sandbox Code Playgroud)
没有火花
如果你不想使用spark那么你应该使用BufferedReader或StreamReader或hadoop filesystem api.例如
val hdfs = FileSystem.get(new URI("hdfs://yourUrl:port/"), new Configuration())
val path = new Path("/path/to/file/")
val stream = hdfs.open(path)
def readLines = Stream.cons(stream.readLine, Stream.continually( stream.readLine))
Run Code Online (Sandbox Code Playgroud)