如何从DataFrame创建映射并将其转换为json字符串

时间:2016-04-18 01:41:00

标签: json scala apache-spark gson spark-dataframe

我正在尝试从dataframe获取columnName->值的映射。我尝试了

val g=dataFrame.limit(limit)
val p=g.columns.map(i=>(i,g.select(i).map(_.get(0)).collect()))

val g=dataFrame.limit(limit)
val p=g.columns.map(i=>(i->g.select(i).map(_.get(0)).collect()))

但是bot给了我一个数组[String,Array [Any]] 我想得到一个地图[String,Array [Any]]

我最后还尝试了.toMap将数组转换为map,

val g=dataFrame.limit(limit)
val p=g.columns.map(i=>(i,g.select(i).map(_.get(0)).collect())).toMap
val gson=new Gson
gson.toJson(p)

但是这给了我形式为

的json字符串
{"key1":"eq_site_deductible","value1":[0.0,0.0,0.0,],"key2":"county","value2":["CLAY COUNTY","CLAY COUNTY","Mary county"]}

我希望得到{" eq_site_deductible":[value array]," county":[value array]}

形式的json字符串

1 个答案:

答案 0 :(得分:0)

如果您只需要json,则无需将其转换为地图。

可以使用以下代码段将数据帧内容写入json文件

dataFrame.write.format("json").save("result.json")

或者如果您需要在代码中进一步处理json字符串,可以使用dataframe.toJSON来获取RDD [String],其中String将是json