【问题标题】:Processing Strings into Date Datatype column in RDS using PySpark使用 PySpark 将字符串处理为 RDS 中的日期数据类型列
【发布时间】: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 日”转换/加载为日期数据类型列?

谢谢。

【问题讨论】:

    标签: python apache-spark amazon-s3 pyspark amazon-rds


    【解决方案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 太棒了!请投票然后将此答案标记为已接受的答案,以便其他有类似问题的 stackoverflow 访问者可以确定此答案可以解决他们的问题。
    猜你喜欢
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 2022-12-19
    • 2020-08-15
    • 2019-10-27
    • 1970-01-01
    • 2021-10-17
    相关资源
    最近更新 更多