首页 文章

将Dataframe转换为Json数组

提问于
浏览
0

我以下列方式创建了一个spark数据框:

+----+-------+
| age| number|
+----+-------+
|  16|     12|
|  16|     13|
|  16|     14|
|  17|     15|
|  17|     16|
|  17|     17|
+----+-------+

我想以下面的json格式转换它:

[{ 
 'age' : 16,  
 'name' : [12,13,14] 
 },{ 
 'age' : 17,  
 'name' : [15,16,17] 
 }]

我怎样才能实现同样的目标?

1 回答

  • 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]}]| +------------------------------------------------------------+

相关问题