gpt4 book ai didi

scala - 如何原生地从Scala的HDFS中读取文本文件(不使用Spark)?

转载 作者:行者123 更新时间:2023-12-02 19:44:00 25 4
gpt4 key购买 nike

我知道我可以像这样读取Scala中的本地文件:

import scala.io.Source

val filename = "laba01/ml-100k/u.data"

for(line <- Source.fromFile(filename).getLines){
println(line)
}

此代码字很好,并打印出文本文件中的行。我用 JupyterHubApache 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读取此文本文件?

最佳答案

scala.io将无法在HDFS中找到任何文件。不是为了那个如果我没看错,它只能读取您本地(file:///)中的文件

您需要使用hadoop-common.jar从HDFS读取数据。

您可以在此处找到代码示例
https://stackoverflow.com/a/41616512/7857701

关于scala - 如何原生地从Scala的HDFS中读取文本文件(不使用Spark)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62102634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com