我正在尝试将Spark数据集转换为JSON。我尝试了.toJSON()方法,但没有太大帮助。
我有一个看起来像这样的数据集
| ord_status|count|
+--------------------+-----+
| Fallout| 3374|
| Flowthrough|12083|
| In-Progress| 3804|
我正在尝试将其转换为这样的JSON:
"overallCounts": {
"flowthrough": 2148,
"fallout": 4233,
"inprogress": 1300
}
我的问题是,有什么方法可以并排解析列值并将其显示为JSON。
更新:通过将给定的json格式的数据集转换为列表,然后解析每个值并将其放入字符串,我将其转换为json。尽管这需要大量的人工工作。是否有任何内置方法可以将数据集转换为这种json格式?
答案 0 :(得分:0)
请找到以下解决方案。数据集必须使用mapPartitions
进行迭代,然后生成仅包含JSON元素的最终字符串。
val list = List(("Fallout",3374), ("Flowthrough", 12083), ("In-Progress", 3804))
val ds = list.toDS()
ds.show
val rows = ds.mapPartitions(itr => {
val string =
s"""
|"%s" : %d
|""".stripMargin
val pairs = itr.map(ele => string.format(ele._1, ele._2)).mkString
Iterator(pairs)
})
val text = rows.collect().mkString
val finalJson = """
|"overallCounts": {
| %s
| }
|""".stripMargin
println(finalJson.format(text))