Scala将Json文件读取为Json

时间:2018-10-15 16:48:19

标签: scala apache-spark

我想在不解析的情况下将Json文件读取为Json。我不想使用数据框,我只想将其读取为格式不变的常规文件。 任何想法 ?我尝试使用wholtextfile进行阅读,但这会创建df。

3 个答案:

答案 0 :(得分:0)

我已经注意到您指定了apache-spark标签,如果您对香草scala表示某种含义,则此答案将不适用。使用此代码,您可以获得RDD[String],它是分布式数据结构中最文本样式的类型。

// Where sc is your spark context

> val textFile = sc.textFile("myFile.json")
textFile: org.apache.spark.rdd.RDD[String]

答案 1 :(得分:0)

由于您不接受具体的火花答案,也许您可​​以尝试使用像这样的普通scala解决方案(使用spray-json库):

import spray.json._

val source = scala.io.Source.fromFile("yourFile.txt")
val lines = try source.mkString finally source.close()
val yourJson = lines.parseJson

答案 2 :(得分:0)

upickle 库是读取 JSON 文件的最简单的“纯 Scala”方式:

val jsonString = os.read(os.pwd/"src"/"test"/"resources"/"phil.json")
val data = ujson.read(jsonString)
data.value // LinkedHashMap("first_name" -> Str("Phil"), "last_name" -> Str("Hellmuth"), "birth_year" -> Num(1964.0))

有关详细信息,请参阅 this post

上面的代码片段使用 os-lib 从磁盘读取文件。如果您在集群环境中运行代码,您可能需要使用不同的库。这取决于文件所在的位置和您的环境。

避免使用其他 Scala JSON 库,因为它们很难使用。