pyspark - 将两个数据帧与目标中的额外列合并

Posted

技术标签:

【中文标题】pyspark - 将两个数据帧与目标中的额外列合并【英文标题】:pyspark - merge two data frames with extra column in target 【发布时间】:2022-01-13 06:49:00 【问题描述】:

我正在尝试使用 pyspark 在 SQL 中进行类似合并的功能。我有以下 2 个数据框作为源和目标。

source
    
id,name,city
1,abc,pune
2,xyz,noid

我希望在目标数据框下方有 2 个额外的列

id,name,city,createdAt,lastupdatedAt
1,abc,pune,current_time,current_time
2,xyz,noida,current_time,current_time

这里的键列是id 字段。因此,如果源数据框有任何变化,我的目标数据框应该反映相同。如果源有更新的数据,目标字段createdAt 保持不变,我们更新了lastupdatedAt 字段。如果源有新数据,则应更新目标字段createdAt,而lastupdatedAt 字段保持不变。

有人可以帮我解决逻辑,或者如果需要进行任何设计更改以实现此要求。

提前致谢, 瓦西姆

【问题讨论】:

【参考方案1】:

请检查 delta Lake 实施以实施此 [1]:https://docs.databricks.com/delta/delta-update.html#language-python

也可以在 spark 本身中实现,使用完全外连接来检查基于列的记录更新。

【讨论】:

感谢您的意见。我正在尝试使用连接条件,但无法在目标数据框中添加两个额外的列,并且根据需要进行更新。你能帮我提供任何示例代码或类似的东西吗? 您需要使用 .withColumn('Createddate',current_timestamp())。正如我猜测的那样,这需要某种更新,您需要在何时或以其他方式更新加入后的帖子。 我只想在源数据是新的并且只有在源数据更新时才最后更新时才添加时间戳数据。

以上是关于pyspark - 将两个数据帧与目标中的额外列合并的主要内容,如果未能解决你的问题,请参考以下文章

Python pandas:合并两个没有键的表(将 2 个数据帧与广播所有元素相乘;NxN 数据帧)

如何使用具有不同列号pyspark的两个数据帧的并集

将两个数据帧与一些常见列合并,其中共同需要的组合是自定义函数

pandas将dataframe中的年月日数据列合并成完整日期字符串并使用to_datetime将字符串格式转化为日期格式

将数据帧与时间戳和间隔合并

将没有唯一索引的数据帧与 Python 和 Pandas 合并 [重复]