如何在 Spark 数据框中添加具有当前日期的额外列

Posted

技术标签:

【中文标题】如何在 Spark 数据框中添加具有当前日期的额外列【英文标题】:How to add Extra column with current date in Spark dataframe 【发布时间】:2020-09-09 13:57:39 【问题描述】:

我正在尝试使用 withColumn 方法在我现有的 Pyspark 数据框中添加一列。我想在此列中插入当前日期。从我的源中我没有任何日期列,所以我在我的数据框并将此数据框保存在我的表中,以便稍后出于跟踪目的,我可以使用此当前日期列。 我正在使用以下代码

    df2=df.withColumn("Curr_date",datetime.now().strftime('%Y-%m-%d'))

这里 df 是我现有的数据框,我想将 df2 保存为带有 Curr_date 列的表。 但这里它期望现有的列或点亮方法而不是 datetime.now().strftime('%Y-%m-%d')。 有人请指导我如何在我的数据框中添加此日期列。?

【问题讨论】:

【参考方案1】:

使用litcurrent_date

from pyspark.sql import functions as F

df2 = df.withColumn("Curr_date", F.lit(datetime.now().strftime("%Y-%m-%d")))

# OR

df2 = df.withColumn("Curr_date", F.current_date())

【讨论】:

【参考方案2】:

current_timestamp() 很好,但在序列化期间会对其进行评估。

如果你更喜欢使用timestamp的处理时间的一行,那么你可以使用下面的方法,

withColumn('current', expr("reflect('java.time.LocalDateTime', 'now')"))

【讨论】:

【参考方案3】:

有一个spark函数current_timestamp()

from pyspark.sql.functions import *

df.withColumn('current', date_format(current_timestamp(), 'yyyy-MM-dd')).show()

+----+----------+
|test|   current|
+----+----------+
|test|2020-09-09|
+----+----------+

【讨论】:

以上是关于如何在 Spark 数据框中添加具有当前日期的额外列的主要内容,如果未能解决你的问题,请参考以下文章

使用 spark 写入 parquet 文件时如何添加额外的元数据

Spark数据框不添加具有空值的列

如何使用另一个日期时间索引获取具有日期时间索引的 Pandas 数据框中的行?

如何在 Scala/Spark 的数据框中扩展数组 [重复]

使用pyspark,spark + databricks时如何将完全不相关的列添加到数据框中

如何使用 Scala/Spark 添加不基于数据框中现有列的新列? [复制]