我有一个CSV文件,我需要阅读与Pyspark。CSV具有各种日期和时间戳字段,时间戳格式为yyyyMMddHHmmss,日期为yyyMMdd。现在我需要用StructType([StructField()])声明模式,我可以对那些字段使用DateType()和TimestampType()吗?否则我的格式会有问题。
yyyyMMddHHmmss
yyyMMdd
StructType([StructField()])
DateType()
TimestampType()
rqqzpn5f1#
您可以使用DateType表示日期,TimestampType表示日期时间。此外,您需要提供dateFormat和timestampFormat选项,如here所述。
DateType
TimestampType
dateFormat
timestampFormat
schema = StructType([StructField('datetime_col', TimestampType()), StructField('date_col', DateType())]) df = spark.read.option("header", True).option("dateFormat", "yyyyMMdd").option("timestampFormat", "yyyyMMddHHmmss").schema(schema).csv("/content/sample_data/test.csv") df.show(truncate=False) +---------------+------------+ |datetime_col |date_col | +---------------+------------+ |20221103191500 |20221103 | +---------------+------------+ df.printSchema() root |-- datetime_col: string (nullable = true) |-- date_col: string (nullable = true)
使用的CSV文件示例:
datetime_col, date_col 20221103191500, 20221103
1条答案
按热度按时间rqqzpn5f1#
您可以使用
DateType
表示日期,TimestampType
表示日期时间。此外,您需要提供dateFormat
和timestampFormat
选项,如here所述。使用的CSV文件示例: