如何将一组字段写入JSON?

我正在尝试将数据框中的几个字段写入JSON。我在数据框中的数据结构是

Key|col1|col2|col3|col4
key|a   |b   |c   |d
Key|a1  |b1  |c1  |d1

现在我正在尝试仅将col1到col4字段转换为JSON并为Json字段命名

预期产量

[Key,{cols:[{col1:a,col2:b,col3:c,col4:d},{col1:a1,col2:b1,col3:c1,col4:d1}]

我为此写了一个udf。

val summary = udf( 
(col1:String, col2:String, col3:String, col4:String) => "{\"cols\":[" + "  {\"col1\":" + col1 + ",\"col2\":" + col2 + ",\"col3\":" + col3 + ",\"col4\":" + col4 + "}]}"
)

val result = input.withColumn("Summary",summary('col1,'col2,'col3,'col4))
val result1 = result.select('Key,'Summary)
result1.show(10)

这是我的结果

[Key,{cols:[{col1:a,col2:b,col3:c,col4:d}]}]
[Key,{cols:[{col1:a1,col2:b1,col3:c1,col4:d1}]}]

如您所见,它们没有分组。有没有一种使用UDF本身对这些行进行分组的方法。我是scala / Spark的新手,无法找出适当的udf。

马修·格雷夫斯(Matthew Graves)

UDF将一行映射到一行。如果您DataFrame要将多个行合并为一个元素,则需要使用类似的功能reduceByKey来聚合多个行。

可能有一个DataFrame特定的功能可以执行此操作,但是我会使用该RDD功能执行此处理,如下所示:

val colSummary = udf( 
(col1:String, col2:String, col3:String, col4:String) => "{\"col1\":" + col1 + ",\"col2\":" + col2 + ",\"col3\":" + col3 + ",\"col4\":" + col4 + "}"
)
val colRDD = input.withColumn("Summary",summary('col1,'col2,'col3,'col4)).rdd.map(x => (x.getString(0),x.getString(5)))

这给了我们一个RDD[(String,String)],这将允许我们使用PairRDDFunctionslike reduceByKey(请参阅docs)。元组的键是原始键,值是我们需要聚合在一起以组成cols列表的单个元素的json编码我们将它们全部粘贴到一个逗号分隔的列表中,然后添加开始和结束,然后完成。

val result = colRDD.reduceByKey((x,y) => (x+","+y)).map(x => "["+x._1+",{\"cols\":["+x._2+"]}]")
result.take(10)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将一组 JSON 对象转换为 C# 列表

来自分类Dev

如何将所选对象从一组对象推入一组对象

来自分类Dev

如何将一组Azure网站分配给一组特定实例?

来自分类Dev

如何将一组与一组完全匹配

来自分类Dev

如何将标签与一组单选按钮关联?

来自分类Dev

如何将一组经度放入Google地图

来自分类Dev

如何将一组左对齐的段落居中?

来自分类Dev

如何将枚举类用作一组标志?

来自分类Dev

如何将一组经度放入Google地图

来自分类Dev

如何将一组相关步骤分为几组

来自分类Dev

如何将一组坐标转换为Char?

来自分类Dev

在R中,如何将参数与JSON数据中的一组值链接起来?

来自分类Dev

如何将一组值与组1相匹配

来自分类Dev

如何使用xlsxwriter(无熊猫)将一组列表写入Excel?

来自分类Dev

如何使用NSSecureCoding和NSKeyedArchiver将一组类写入文档目录?

来自分类Dev

将一组对象放入 JSON

来自分类Dev

如何将一个形状分解为一组基本形状?

来自分类Dev

春季如何将一个豆子注入一组豆子中?

来自分类Dev

聚合物-如何将事件一次绑定到一组按钮

来自分类Dev

如何将一个数组中的一组数字相加?

来自分类Dev

如何将熊猫数据框的值除以第一行的每一组?

来自分类Dev

Azure ARM VNET:如何将RDP访问限制为一组特定的IP

来自分类Dev

如何将配置应用于一组基于属性的测试?

来自分类Dev

如何将变化的数据源绑定到一组SVG?

来自分类Dev

如何将必选属性用于一组复选框?

来自分类Dev

如何将构成凸包的半空间转换为一组极限点?

来自分类Dev

如何将一组特定的原子向量添加到特定的df列?

来自分类Dev

如何将嵌套循环用于一组中两个坐标的距离?

来自分类Dev

如何将数据框行转换为一组对?

Related 相关文章

  1. 1

    如何将一组 JSON 对象转换为 C# 列表

  2. 2

    如何将所选对象从一组对象推入一组对象

  3. 3

    如何将一组Azure网站分配给一组特定实例?

  4. 4

    如何将一组与一组完全匹配

  5. 5

    如何将标签与一组单选按钮关联?

  6. 6

    如何将一组经度放入Google地图

  7. 7

    如何将一组左对齐的段落居中?

  8. 8

    如何将枚举类用作一组标志?

  9. 9

    如何将一组经度放入Google地图

  10. 10

    如何将一组相关步骤分为几组

  11. 11

    如何将一组坐标转换为Char?

  12. 12

    在R中,如何将参数与JSON数据中的一组值链接起来?

  13. 13

    如何将一组值与组1相匹配

  14. 14

    如何使用xlsxwriter(无熊猫)将一组列表写入Excel?

  15. 15

    如何使用NSSecureCoding和NSKeyedArchiver将一组类写入文档目录?

  16. 16

    将一组对象放入 JSON

  17. 17

    如何将一个形状分解为一组基本形状?

  18. 18

    春季如何将一个豆子注入一组豆子中?

  19. 19

    聚合物-如何将事件一次绑定到一组按钮

  20. 20

    如何将一个数组中的一组数字相加?

  21. 21

    如何将熊猫数据框的值除以第一行的每一组?

  22. 22

    Azure ARM VNET:如何将RDP访问限制为一组特定的IP

  23. 23

    如何将配置应用于一组基于属性的测试?

  24. 24

    如何将变化的数据源绑定到一组SVG?

  25. 25

    如何将必选属性用于一组复选框?

  26. 26

    如何将构成凸包的半空间转换为一组极限点?

  27. 27

    如何将一组特定的原子向量添加到特定的df列?

  28. 28

    如何将嵌套循环用于一组中两个坐标的距离?

  29. 29

    如何将数据框行转换为一组对?

热门标签

归档