我想通过以下特定方式将 Spark DataFrame 转换为另一个 DataFrame:
我有 Spark 数据帧:
+---------+------------+
|protocol | count |
+---------+------------+
| TCP| 8231 |
| ICMP| 7314 |
| UDP| 5523 |
| IGMP| 4423 |
| EGP| 2331 |
+---------+------------+
我想把它变成:
+----------------------------------------------------------+
|Aggregated |
+----------------------------------------------------------+
|{tcp: 8231, icmp: 7314, udp: 5523, igmp: 4423, egp: 2331} |
+----------------------------------------------------------+
聚合列可以是列表或地图,也可以是字符串。这是否可以使用 DataFrame 函数实现,或者我是否需要创建自己的 udf 来聚合它?
pivot
并且toJSON
会给你你需要的
import org.apache.spark.sql.functions.first
df.groupBy().pivot("protocol").agg(first("count")).toJSON.show(false)
// +----------------------------------------------------------+
// |value |
// +----------------------------------------------------------+
// |{"EGP":2331,"ICMP":7314,"IGMP":4423,"TCP":8321,"UDP":5523}|
// +----------------------------------------------------------+
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句