apache-spark - 将 Dataframe 转换为 Json 数组
问题描述
我以下列方式创建了一个火花数据框:
+----+-------+
| 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]
}]
我怎样才能达到同样的效果?
解决方案
你可以试试 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]}]|
+------------------------------------------------------------+
推荐阅读
- video - 如何从网络摄像头保存视频?
- asp.net-core - aspnet-codegenerator:没有可用的代码生成器,即使添加了 Microsoft.VisualStudio.Web.CodeGeneration.Design
- r - 在 trans_new scales 包中使用反参数
- dynamic-programming - 基于动态规划的利润最大化
- css - 试图让我的 CSS 网格系统响应
- angular - 串联运行时NG忽略参数
- php - 如果模型中的查询在 Codeigniter 3 中返回空,则重定向到控制器
- laravel - Laravel 7 查询 with() 和使用 Where()
- oracle - 知道在表空间中创建了哪些列?
- python - Spyder 4.1.4 在 MacBook Pro 和 Anaconda 上崩溃