将数据帧转换为Json数组

时间:2018-12-10 07:14:24

标签: apache-spark dataframe

我已经按照以下方式创建了spark数据框:

personNames.forEach { (personName) in
    print(personName.firstName)
    print(personName.lastName)

}

我想将其转换为以下json格式:

boot repl

我怎么能做到相同?

1 个答案:

答案 0 :(得分:2)

您可以尝试to_json函数。像这样的东西。

import spark.implicits._

val list = List((16,12), (16,13), (16,14), (17,15), (17,16), (17,17))
val df = spark.parallelize(list).toDF("age", "number")

val jsondf = df.groupBy($"age").agg(collect_list($"number").as("name"))
    .withColumn("json", to_json(struct($"age", $"name")))
    .drop("age", "name")
    .agg(collect_list($"json").as("json"))

结果如下。希望对您有所帮助。

+------------------------------------------------------------+ |json | +------------------------------------------------------------+ |[{"age":16,"name":[12,13,14]}, {"age":17,"name":[15,16,17]}]| +------------------------------------------------------------+