sql - PySpark - 如何使用连接更新 Dataframe?

标签 sql apache-spark pyspark

我有一个数据框:

id,value
1,11
2,22
3,33

还有另一个数据框b:

id,value
1,123
3,345

我想用 b 中的所有匹配值更新数据框 a(基于“id”列)。

最终数据框“c”将是:

id,value
1,123
2,22
3,345

如何使用数据名连接(或其他方法)实现这一目标?

尝试过:

a.join(b, a.id == b.id, "inner").drop(a.value)

给出(不需要的输出):

+---+---+-----+
| id| id|value|
+---+---+-----+
|  1|  1|  123|
|  3|  3|  345|
+---+---+-----+

谢谢。

最佳答案

我认为没有更新功能。但这应该有效:

import pyspark.sql.functions as F

df1.join(df2, df1.id == df2.id, "left_outer") \
   .select(df1.id, df2.id, F.when(df2.value.isNull(), df1.value).otherwise(df2.value).alias("value")))

关于sql - PySpark - 如何使用连接更新 Dataframe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58377576/

相关文章:

sql - 将列值作为属性添加到 xml 字段

不再支持复合键上的 MySQL auto_increment?

sql - CodeFirst 迁移 : How to run a database script (C# or SQL) after completion of "update-database" automatically?

sql - 如何在 PostgreSQL 数据库中正确聚合日期?

apache-spark - Spark Streaming 作业日志大小溢出

scala - 比较Spark中当前行和上一行的值

apache-spark - Spark Redshift 连接器 : combine saving to redshift with a delete query

python - 执行顺序和缓存需求

pyspark - 如何使用均值和标准差从 pyspark 中的多个列中删除异常值

apache-spark - pyspark查询时如何提取json的值