Я знаю, что могу читать локальный файл в 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
?