将 spark 数据框的列转换为 json
convert columns of spark data frame to json
我有一个数据框,其中包含数据框的统计描述。
x=summaryDataFrame
+-------+---+
|summary| c1|
+-------+---+
| count| 3|
| mean|3.0|
| stddev|2.0|
| min| 1|
| max| 5|
+-------+---+
现在我想把它转换成 json 格式
{"c1":{"mean":3,"count":3,"stddev":2,...}}
我也可以在 x
中有 n 列。请帮我实现这个我是 scala 的新手。
提前致谢
您可以采用的一种方法:
val funs = Seq("count", "mean", "stddev", "min", "max")
def makeExprs(c: String, funs: Seq[String]) = funs.map(f => s"$f($c) AS $f")
val df = sc.parallelize(Seq(
(32.0, 31.0, 14.0), (3.6, 2.8, 0.0), (4.5, 5.0, -1.2)
)).toDF
df.columns.flatMap(c => df
.selectExpr(makeExprs(c, funs): _*)
.toJSON
.map(r => s"""{"$c": $r}""").collect
)
我有一个数据框,其中包含数据框的统计描述。
x=summaryDataFrame
+-------+---+
|summary| c1|
+-------+---+
| count| 3|
| mean|3.0|
| stddev|2.0|
| min| 1|
| max| 5|
+-------+---+
现在我想把它转换成 json 格式
{"c1":{"mean":3,"count":3,"stddev":2,...}}
我也可以在 x
中有 n 列。请帮我实现这个我是 scala 的新手。
提前致谢
您可以采用的一种方法:
val funs = Seq("count", "mean", "stddev", "min", "max")
def makeExprs(c: String, funs: Seq[String]) = funs.map(f => s"$f($c) AS $f")
val df = sc.parallelize(Seq(
(32.0, 31.0, 14.0), (3.6, 2.8, 0.0), (4.5, 5.0, -1.2)
)).toDF
df.columns.flatMap(c => df
.selectExpr(makeExprs(c, funs): _*)
.toJSON
.map(r => s"""{"$c": $r}""").collect
)