【发布时间】:2017-05-18 06:17:28
【问题描述】:
我在 spark 作业中使用 json scala 库从本地驱动器解析 json:
val requestJson=JSON.parseFull(Source.fromFile("c:/data/request.json").mkString)
val mainJson=requestJson.get.asInstanceOf[Map[String,Any]].get("Request").get.asInstanceOf[Map[String,Any]]
val currency=mainJson.get("currency").get.asInstanceOf[String]
但是当我尝试通过指向 hdfs 文件位置来使用相同的解析器时它不起作用:
val requestJson=JSON.parseFull(Source.fromFile("hdfs://url/user/request.json").mkString)
并给我一个错误:
java.io.FileNotFoundException: hdfs:/localhost/user/request.json (No such file or directory)
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)
... 128 elided
如何使用 Json.parseFull 库从 hdfs 文件位置获取数据?
谢谢
【问题讨论】:
-
您应该提供类似
hdfs://cluster_name/path/to/file'的`hdfs` 位置,或者简单地提供类似/path/to/file/的目录名称。请尝试让我知道我会相应地回答。 -
是的,我尝试将 hdfs 路径提供给 Source.fromFile api,但不起作用
-
你能发布错误日志吗?
-
java.io.FileNotFoundException: hdfs:/hdfsurl/user/request.json(没有这样的文件或目录)在 java.io.FileInputStream.open0(本机方法)在 java.io.FileInputStream。 open(FileInputStream.java:195) 在 java.io.FileInputStream.
(FileInputStream.java:138) 在 scala.io.Source$.fromFile(Source.scala:91) 在 scala.io.Source$.fromFile (Source.scala:76) at scala.io.Source$.fromFile(Source.scala:54) ... 128 省略
标签: scala apache-spark apache-spark-sql apache-spark-2.0