Pyspark:输出到 csv -- 时间戳格式不同



我正在使用具有以下时间戳格式的数据集:yyyy-MM-dd HH:mm:ss

当我将数据输出到 csv 时,格式更改为如下所示:2019-04-29T00:15:00.000Z

有没有办法让它变成原始格式,例如:2019-04-29 00:15:00

我是否需要将该列转换为字符串,然后将其推送为 csv?

我像这样对csv说我的文件:

df.coalesce(1).write.format("com.databricks.spark.csv"
).mode('overwrite'
).option("header", "true"
).save("date_fix.csv")

替代

火花>=2.0.0

set option(">timestampFormat", "yyyy-MM-dd HH:mm:ss"( for format("csv"(

df.coalesce(1).write.format("csv"
).mode('overwrite'
).option("header", "true"
).option("timestampFormat", "yyyy-MM-dd HH:mm:ss"
).save("date_fix.csv")

根据文档-

timestampFormat(默认yyyy-MM-dd'T'HH:mm:ss.SSSXXX(:设置指示时间戳格式的字符串。自定义日期格式遵循java.text.SimpleDateFormat中的格式。这适用于时间戳类型。

火花<2.0.0

set option(">dateFormat", "yyyy-MM-dd HH:mm:ss"( for format("csv"(

df.coalesce(1).write.format("com.databricks.spark.csv"
).mode('overwrite'
).option("header", "true"
).option("dateFormat", "yyyy-MM-dd HH:mm:ss"
).save("date_fix.csv")

根据文档-

dateFormat:指定一个字符串,该字符串指示读取日期或时间戳时要使用的日期格式。自定义日期格式遵循 java.text.SimpleDateFormat 中的格式。这适用于日期类型和时间戳类型。默认情况下,它是空的,这意味着尝试通过java.sql.Timestamp.valueOf((和java.sql.Date.valueOf((解析时间和日期

参考 - 自述文件

是的,没错。实现此目的的最简单方法是使用pyspark.sql.functions.date_format,例如:

import pyspark.sql.functions as f
df.withColumn(
"date_column_formatted",  
f.date_format(f.col("timestamp"), "yyyy-MM-dd HH:mm:ss")
)

有关它的更多信息,请点击此处 https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.functions.date_format。 希望这有帮助!

最新更新