PySpark中的DateType()定义是否为Null?

PySpark中的DateType()定义是否为Null?,pyspark,Pyspark,我有一些大端的日期,比如: 在CSV中输入YYYYMMDD 当我使用简单的字符串类型时,数据会正确加载,但当我使用DateType对象定义列时,所有内容都会为null。我是否能够在某处定义日期格式,或者Spark是否应该自动推断 schema_comments= StructType([ StructField("id", StringType(), True), StructField("date", DateType(), True), ]) DateType需要spark

我有一些大端的日期,比如: 在CSV中输入YYYYMMDD

当我使用简单的字符串类型时,数据会正确加载,但当我使用DateType对象定义列时,所有内容都会为null。我是否能够在某处定义日期格式,或者Spark是否应该自动推断

schema_comments= StructType([
    StructField("id", StringType(), True),
    StructField("date", DateType(), True),
])

DateType需要spark中的标准时间戳格式,因此如果您在模式中提供它,它应该是1997-02-28 10:30:00格式,如果不是这样,请使用pandas或pyspark以字符串格式读取它,然后您可以使用python和pyspark将其转换为DateType对象。以下是在pyspark中将YYYYMMDD格式转换为DateType的示例代码:

from pyspark.sql.functions import unix_timestamp

df2 = df.select('date_str', from_unixtime(unix_timestamp('date_str', 'yyyyMMdd')).alias('date'))

这个模式在我看来很好。 您可以定义spark如何使用dateFormat读取CSV

例如:


我也可以对该字段使用IntegerType。您可以添加读取数据的方式吗?您是如何读取csv的?是pandas还是pyspark
rc = spark.read.csv('yourCSV.csv', header=False,
                    dateFormat="yyyyddMM", schema=schema)