首页 > 解决方案 > 如何在 Spark 中发送 JSON 响应

问题描述

我的 JSON 文件(input.json)如下所示。

{"first_name":"Sabrina","last_name":"Mayert","email":"donny54@yahoo.com"}
{"first_name":"Taryn","last_name":"Dietrich","email":"donny54@yahoo.com"}

我的 Scala 代码如下所示。在这里,我试图根据电子邮件返回 first_name 和 last_name。

val conf = new SparkConf().setAppName("RowCount").setMaster("local")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val input = sqlContext.read.json("input.json")
val data = input
                .select("first_name", "last_name")
                .where("email=='donny54@yahoo.com'")
                .toJSON

data.write.json("input2")
sc.stop
complete(data.toString)

data.write.json("input2") 创建文件如下所示

{"value":"{\"first_name\":\"Sabrina\",\"last_name\":\"Mayert\"}"}
{"value":"{\"first_name\":\"Taryn\",\"last_name\":\"Dietrich\"}"}

完成(data.toString)返回响应[值:字符串]

如何获取 JSON 对象的响应数组。

[{"first_name":"Sabrina","last_name":"Mayer"},{"first_name":"Taryn","last_name":"Dietrich"}] 

提前感谢您的帮助。

标签: scalaapache-spark

解决方案


您正在转换为 json 两次。不要使用 json 转换两次,你应该得到你想要的输出:

  val data = input
            .select("first_name", "last_name")
            .where("email=='donny54@yahoo.com'")

  data.write.json("input2")

输出:

 {"first_name":"Sabrina","last_name":"Mayert"}
 {"first_name":"Taryn","last_name":"Dietrich"}

这是否解决了您的问题,或者您是否特别需要将其转换为数组?


推荐阅读