如何在 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】:使用lit
或current_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 文件时如何添加额外的元数据
如何使用另一个日期时间索引获取具有日期时间索引的 Pandas 数据框中的行?
如何在 Scala/Spark 的数据框中扩展数组 [重复]