将spark数据框的列转换为json

时间:2016-02-01 17:20:03

标签: apache-spark apache-spark-sql spark-dataframe

我的数据框包含数据帧的统计描述。 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很新。

先谢谢

1 个答案:

答案 0 :(得分:0)

您可以采用的一种方式:

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
)