使用 PySpark 将字符串处理为 RDS 中的日期数据类型列

Processing Strings into Date Datatype column in RDS using PySpark

文件中的一个日期列(在 AWS S3 中)是“2021 年 7 月 28 日”Format.Since它是一个被视为字符串的文件datatype.I我正在尝试加载数据进入 RDS(Postgres)。 RDS 列是日期数据类型。

我正在使用下面的行将字符串转换为日期,但 NULLS 被加载到日期列中,其余 string/integer 列被正确加载。 df_S3=df_S3.withColumn('visit_date', to_date(df_S3.visit_date, 'MON DD, YYYY'))

我在 S3 文件中将日期从“2021 年 7 月 28 日”更改为“2021 年 7 月 28 日”,并使用以下代码行将数据处理为 RDS - df_S3=df_S3.withColumn('visit_date', to_date(df_S3.visit_date, 'DD-MMM-YYYY'))

日期已正确加载到 RDS 中。

能否请您告知如何使用 PySpark convert/load“2021 年 7 月 28 日”到日期数据类型列中?

谢谢。

您可以尝试以下方法

df_S3=df_S3.withColumn('visit_date', to_date(df_S3.visit_date, 'MMMM d, yyyy'))

基于 latest docs 中传达的更改:

我们使用 MMMM 匹配完整的月份名称,d 匹配日期编号,yyyy 匹配年份。

完整示例

df_S3 = spark.createDataFrame([("July 28, 2021",),("March 5, 2013",)],schema="visit_date string")
df_S3.show()
+-------------+
|   visit_date|
+-------------+
|July 28, 2021|
|March 5, 2013|
+-------------+
df_S3.withColumn('visit_date2', F.to_date(df_S3.visit_date, 'MMMM d, yyyy')).show()
+-------------+-----------+
|   visit_date|visit_date2|
+-------------+-----------+
|July 28, 2021| 2021-07-28|
|March 5, 2013| 2013-03-05|
+-------------+-----------+