使用 spark 和 Scala 读取文本文件中的 JSON

abh*_*800 3 text json scala apache-spark

我有一个包含 JSON 数据的文本文件,如下所示:

{
  "element" : value,
  "id" : value,
  "total" : []
}
{
  "element" : value,
  "id" : value,
  "total: []
}
Run Code Online (Sandbox Code Playgroud)

所有 JSON 都以新行分隔。

我正在尝试将所有文​​本文件数据加载到临时视图中:

sqlContext.read.textFiles("/path").createOrReplaceTempView("result")

val data = sqlContext.sql("select * from result").collect()
Run Code Online (Sandbox Code Playgroud)

结果:

[{"element" : value,"id" : value,"total" : [] }]
[{"element" : value,"id" : value, "total" : []}]
Run Code Online (Sandbox Code Playgroud)

我需要提取 id 和与之相关的总数。

有没有办法在火花中处理这个?

Avi*_*rya 5

对于 Spark SQL,每一行都必须包含一个单独的、自包含的有效 JSON,否则计算会失败。

不过你可以试试这个

spark.read.json(spark.sparkContext.wholeTextFiles("path to json").values) 
Run Code Online (Sandbox Code Playgroud)

或者

spark.read.option("wholeFile", true).option("mode", "PERMISSIVE").json("path to json")
Run Code Online (Sandbox Code Playgroud)

这应该将 json 转换为数据帧。