我知道我可以像这样读取本地文件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
呢?