scala怎么读取hdfs中的文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scala怎么读取hdfs中的文件相关的知识,希望对你有一定的参考价值。
参考技术A scala怎么读取hdfs中的文件前面我们介绍了很多MSI文件的内容,其实MSI并不神秘、复杂,我们自己都能制作,并且制作MSI文件的工具已经在Windows的安装盘上了。
首先,找到Windows2000的安装光盘,双击下边的这个位置的文件:valueadd\3rdparty\Mgmt\Winstleadmle.msi,
很快软件就自动安装到了电脑中。在开始菜单的所有程序里边就多了“VERITAS software”组,点击运行里边的“VERITAS discover”就可以开始制作MSI文件了。本回答被提问者采纳 参考技术B 直接上代码,不谢。
import java.io.BufferedReader
import java.net.URI
import java.util.Properties
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.FSDataInputStream, FileSystem, Path
object li1943695812
def main(args: Array[String]): Unit =
// 首先命名配置文件hdfs地址
val dfsrc="hdfs://jacky:9000/conf/cs.txt"
// 加载配置文件解析对象
val properties = new Properties()
// 创建fddatastream 对象
val hdfs = FileSystem.get(URI.create(dfsrc),new Configuration())
// 打开hdfs 文件流
var fs =hdfs.open(new Path(dfsrc))
// 读取配置文件
properties.load(fs)
val aa = properties.getProperty("hh")
// 打印
println(aa)
无法从 Scala 中的资源文件夹中读取文件
【中文标题】无法从 Scala 中的资源文件夹中读取文件【英文标题】:Cannot read file from resource folder in Scala 【发布时间】:2021-12-31 12:08:57 【问题描述】:我正在尝试读取位于我的/src/test/resources/data
文件夹中的文件“my_data.txt”。
––– src
–– main
–– test
––– resources
––– data
––– my_data.txt
我有以下代码可以做到这一点:
val filename = getClass.getResource("/src/test/resources/data/my_data.txt").getPath
当我编译它时,编译很顺利,但是,当我在鸭子中运行测试时,我收到以下错误消息:
java.lang.NullPointerException
at (xxxx.scala:128)
at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
at org.scalatest.Transformer.apply(Transformer.scala:22)
at org.scalatest.Transformer.apply(Transformer.scala:20)
at org.scalatest.FunSpecLike$$anon$1.apply(FunSpecLike.scala:454)
at org.scalatest.TestSuite.withFixture(TestSuite.scala:196)
at org.scalatest.TestSuite.withFixture$(TestSuite.scala:195)
at org.scalatest.FunSpec.withFixture(FunSpec.scala:1630)
at org.scalatest.FunSpecLike.invokeWithFixture$1(FunSpecLike.scala:452)
at org.scalatest.FunSpecLike.$anonfun$runTest$1(FunSpecLike.scala:464)
at org.scalatest.SuperEngine.runTestImpl(Engine.scala:289)
at org.scalatest.FunSpecLike.runTest(FunSpecLike.scala:464)
at org.scalatest.FunSpecLike.runTest$(FunSpecLike.scala:446)
When I try to print the path that I am reading from I got `null` as an output.
又一次尝试
除了上面我尝试了以下代码:
val ss = scala.io.Source.fromResource("/src/test/resources/data/my_data.txt")
ClassLoader.getSystemResource("/src/test/resources/data/my_data.txt").getPath
另外,我在POM
文件中的资源中添加了src/test/resources/data
终于
正如this 提到的,我检查了编译器中是否包含.txt
(我正在使用MAC
)
【问题讨论】:
getClass.getResource("/data/my_data.txt")
工作吗?
正如我上面提到的,它没有。
注意路径本身。我评论了从资源目录(/data/my_data.txt
)开始的路径,但是在您的问题中使用了绝对路径。
这就是我的代码中的内容:val fileName = getClass.getResource("/data/my_data.txt").getFile()
【参考方案1】:
好吧,我通过使用getAbsolutePath
获取绝对路径解决了这个问题。我指出test.properties
文件有dataDir
。这是我所做的:
properties.load(getClass.getClassLoader.getResourceAsStream("test.properties"))
testDataDirectory = new File(properties.getProperty("dataDir"))
val file = new File(testDataDirectory.getAbsolutePath +"/data/my_data.txt"
for (line <- Source.fromFile(file).getLines)
println(line)
这并不意味着这是 “最佳” 方法,但以防万一您遇到类似问题,高于我用来解决它的方法。
【讨论】:
以上是关于scala怎么读取hdfs中的文件的主要内容,如果未能解决你的问题,请参考以下文章
在 Spark/Scala 中写入 HDFS,读取 zip 文件