【问题标题】:convert date month year time to date format pyspark将日期月份年份时间格式转换为pyspark
【发布时间】:2021-07-04 05:06:50
【问题描述】:

我有一个带有时间戳列的文件。当我尝试使用自己设计的架构读取文件时,它会使用 null 填充 datetime 列。

源文件有如下数据

created_date
31-AUG-2016 02:48:38
31-AUG-2016 10:37:59
31-AUG-2016 23:37:51

我在哪里使用下面的代码 sn-p

from pyspark.sql.types import *
Raw_Schema = StructType([StructField("created_date",DateType(),True)])

DF = spark.read.csv("csv").option("header","true").schema(Raw_schema).load("\path")
DF.display()

created_date
null
null
null

在上面的 DF.display() 中,所有输入的结果都显示为 null。但是我的预期输出如下:

Created_Date
31-08-2016 
31-08-2016 
31-08-2016 

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案1】:

    您需要提供日期格式,因为 csv 文件中的格式是非标准的。

    df = (spark.read
        .format("csv")
        .option("header","true")
        .option("dateFormat", "dd-MMM-yyyy HH:mm:ss")
        .schema(Raw_schema)
        .load("filepath")
    )
    
    df.show()
    +------------+
    |created_date|
    +------------+
    |  2016-08-31|
    |  2016-08-31|
    |  2016-08-31|
    +------------+
    

    【讨论】:

    • 很抱歉,挑战仍在发生
    • @batman_special 你能澄清一下吗?您还遇到什么问题?
    • df = spark.read.format("csv").option("header","true").option("dateFormat", "dd-MMM-yyyy HH:mm:ss" ).schema(Raw_Schema)\ .load(ROS_Raw_Store)) 使用上述 sn-p 后,我仍然可以看到日期与 31-AUG-2016 02:48:38 31-AUG-2016 10:37 相同:59 2016 年 8 月 31 日 23:37:51
    • 不要把.createOrReplaceTempView放在最后。否则,您将 None 分配给 df。
    • 我尝试了两种方式。我仍然面临同样的挑战
    猜你喜欢
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    相关资源
    最近更新 更多