apache-spark - 如何在 Spark2 中将 Struct 类型的 Map 转换为 Json
问题描述
我在数据集中有一个地图字段,其架构如下
|-- party: map (nullable = true)
| |-- key: string
| |-- value: struct (valueContainsNull = true)
| | |-- partyName: string (nullable = true)
| | |-- cdrId: string (nullable = true)
| | |-- legalEntityId: string (nullable = true)
| | |-- customPartyId: string (nullable = true)
| | |-- partyIdScheme: string (nullable = true)
| | |-- customPartyIdScheme: string (nullable = true)
| | |-- bdrId: string (nullable = true)
需要将其转换为 JSON 类型。请建议如何做。提前致谢
解决方案
Spark 提供了可用于 DataFrame 操作的to_json函数:
import org.apache.spark.sql.functions._
import spark.implicits._
val df =
List(
("key1", "party01", "cdrId01"),
("key2", "party02", "cdrId02"),
)
.toDF("key", "partyName", "cdrId")
.select(struct($"key", struct($"partyName", $"cdrId")).as("col1"))
.agg(map_from_entries(collect_set($"col1")).as("map_col"))
.select($"map_col", to_json($"map_col").as("json_col"))
推荐阅读
- java - 如何在 Android 的 SQLite 数据库中查找具有 TEXT 或 VARCHAR 类型的特定列的内存占用(大小)?
- python-3.x - Python Pillow:用数据加载图像
- flutter - 如何在 Flutter 中使用 OneSignal 通知按钮
- java - 如何使用自定义拆分器拆分由分隔符分隔的 csv 列?
- python - 如何根据单元格值对表格数据进行不同的样式设置?
- java - 为什么 Pattern.compile 在 android studio 和 Java SE 中的行为不同?
- html - 跨浏览器上的字体排版问题
- java - 如何根据以下字符/单词匹配 URI 字符串的特定部分
- ios - 我在 macbook 上为 ios 运行 react-native 时出错
- angular - 如何使用Angular 6中的选择显示和隐藏从数组动态创建的元素