У меня есть 3 объекта в конвейере данных scala / spark. 2 - фреймы данных, а 1 - длинное значение.
Мне нужно создать один json объект, который включает 3 объекта.
Например, если передать конкретную дату в api приложения как запрос:
val df1 = getDF_1(date)
val df2 = getDF_2(date)
val value_3 = getValue_3(date)
По отдельности я могу преобразовать их в json, но я изо всех сил пытаюсь создать один ответ JSON, например:
response = {"date":date, "values"{
"df1":{nested json report}
"df2":{nested json report}
"long3":23234
}
}
Вот как фреймы данных создаются:
case class IpAccessCount(ip:String, uri:String, accessCount:Long)
def toIpAccessCount(ip:String, uri:String, accessCount:Long): IpAccessCount = IpAccessCount(ip, uri,accessCount)
val ipAccessCount=udf(toIpAccessCount _)
spark.udf.register("ipAccessCount", ipAccessCount)
val ipAccessCountByDate = spark.sql("""select ip, uri, datetime, count(*) as accessCount from csvData group by ip, uri, datetime """)
ipAccessCountByDate.createOrReplaceTempView("ipAccessCountByDate")
def GetDateIpAccessCount(date_as_str:String)=
ipAccessCountByDate.filter(col("datetime")===s"$date_as_str").drop("datetime").map(r => toIpAccessCount(r.getString(0), r.getString(1), r.getLong(2))).toDF().coalesce(1)
Я не знаю, как объединить их в один json ответ. Большое спасибо!