使用 PySpark 将字符串处理为 RDS 中的日期数据类型列
Posted
技术标签:
【中文标题】使用 PySpark 将字符串处理为 RDS 中的日期数据类型列【英文标题】:Processing Strings into Date Datatype column in RDS using PySpark 【发布时间】:2022-01-07 11:16:55 【问题描述】:文件中的日期列(在 AWS S3 中)采用“2021 年 7 月 28 日”格式。由于它是一个文件,因此它被视为字符串数据类型。我正在尝试将数据加载到 RDS(Postgres) . RDS 列是日期数据类型。
我正在使用下面的行将字符串转换为日期,但 NULLS 被加载到日期列中,其余字符串/整数列被正确加载。
df_S3=df_S3.withColumn('visit_date', to_date(df_S3.visit_date, 'MON DD, YYYY'))
我在 S3 文件中将日期从“2021 年 7 月 28 日”更改为“28-JUL-2021”,并使用以下代码行将数据处理到 RDS 中 -
df_S3=df_S3.withColumn('visit_date', to_date(df_S3.visit_date, 'DD-MMM-YYYY'))
日期已正确加载到 RDS 中。
您能否建议如何使用 PySpark 将“2021 年 7 月 28 日”转换/加载为日期数据类型列?
谢谢。
【问题讨论】:
【参考方案1】:你可以试试下面的
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|
+-------------+-----------+
【讨论】:
@Sonu 太棒了!请投票然后将此答案标记为已接受的答案,以便其他有类似问题的 *** 访问者可以确定此答案可以解决他们的问题。以上是关于使用 PySpark 将字符串处理为 RDS 中的日期数据类型列的主要内容,如果未能解决你的问题,请参考以下文章
使用 pyspark 从 RDS MySQL 数据库中提取数据
如何使用PySpark将SparseVector中的前X个单词转换为字符串数组
使用 pyspark 将 Spark 数据框中的列转换为数组 [重复]