使用 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|
+-------------+-----------+
文件中的一个日期列(在 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|
+-------------+-----------+