apache-spark - 如何用来自同一数据帧的其他有效条目覆盖 Spark DataFrame 中的空条目?
问题描述
我有一个包含这样的数据的 Spark DataFrame
| id | value1 |value2 |
------------------------
| 1 | null | 1 |
| 1 | 2 | null |
并想改造它
进入
| id | value1 |value2 |
-----------------------
| 1 | 2 | 1 |
也就是说,我需要获取具有相同 id 的行并将它们的值合并到一行中。
你能解释一下什么是最可扩展的方法吗?
解决方案
df.groupBy(“id”).agg(collect_set(“value1”).alias(“value1”),collect_set(“value2”).alias(“value2”))
//更优雅的动态列方式
df.groupBy(“id”).agg(df.columns.tail.map((_ -> “collect_set”)).toMap).show
//1.5
Val df1=df.rdd.map(i=>(i(0).toString,i(1).toString)).groupByKey.mapValues(_.toSet.toList.filter(_!=“null”)).toDF()
Val df2 = df.rdd.map(i=>(i(0).toString,i(2).toString)).groupByKey.mapValues(_.toSet.toList.filter(_!=“null”)).toDF()
df1.join(df2,df1(“_1”) === df2(“_1”),”inner”).drop(df2(“_1”)).show
推荐阅读
- iis - DebugDiag Analysis 生成报告的时间过长
- google-api - 如何通过 Google Photos API 检测照片已被修改?
- python - 如何进行摊销计算
- java - Java - SpringBoot + Feign + Eureka(Feign 无法从 Eureka 解析 URL)
- vue.js - 改变数据的值,但数据没有更新
- java - ListView 具有更多字段和来自 firebase 数据库的自定义外观数据
- javascript - 无法获取 localStorage 中的值来更新我的数据库中的值
- wordpress - 如何让 wp-cli 命令在 cron 的 bash 脚本中工作
- python - 如何使用多个标头执行 GET 请求?
- web - 将对话框流与网站小部件 ui 集成