【问题标题】:pyspark - merge two data frames with extra column in targetpyspark - 将两个数据帧与目标中的额外列合并
【发布时间】: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 字段保持不变。

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

提前致谢, 瓦西姆

【问题讨论】:

    标签: sql python-3.x apache-spark pyspark


    【解决方案1】:

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

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

    【讨论】:

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