我知道我可以读取本地文件 Scala
像这样:
import scala.io.Source
val filename = "laba01/ml-100k/u.data"
for(line <- Source.fromFile(filename).getLines){
println(line)
}
这段代码的字很好,并打印出文本文件中的行。我试过了 JupyterHub
与 Apache Toree
.
我知道我可以从 HDFS
在这个服务器上,因为当我在另一个单元格中运行下一个代码时:
import sys.process._
"hdfs dfs -ls /labs/laba01/ml-100k/u.data"!
它也工作得很好,我可以看到这个输出:
-rw-r--r-- 3 hdfs hdfs 1979173 2020-04-20 17:56 /labs/laba01/ml-100k/u.data
lastException: Throwable = null
warning: there was one feature warning; re-run with -feature for details
0
现在我想读一下这个保存在 HDFS
通过运行以下命令:
import scala.io.Source
val filename = "hdfs:/labs/laba01/ml-100k/u.data"
for(line <- Source.fromFile(filename).getLines){
println(line)
}
但我得到的是这个输出,而不是打印出来的文件行:
lastException = null
Name: java.io.FileNotFoundException
Message: hdfs:/labs/laba01/ml-100k/u.data (No such file or directory)
StackTrace: at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at scala.io.Source$.fromFile(Source.scala:91)
at scala.io.Source$.fromFile(Source.scala:76)
at scala.io.Source$.fromFile(Source.scala:54)
那么我如何从中读取这个文本文件呢 HDFS
?
1条答案
按热度按时间kq0g1dla1#
scala.io
在hdfs中找不到任何文件。不是为了这个。如果我没记错的话,它只能读取本地文件(file:///
)你需要使用
hadoop-common.jar
从hdfs读取数据。您可以在这里找到代码示例https://stackoverflow.com/a/41616512/7857701