gpt4 book ai didi

python - spark read.csv 错误地解析时间戳

转载 作者:太空宇宙 更新时间:2023-11-04 00:03:46 24 4
gpt4 key购买 nike

我的数据湖中有一个 csv 文件 presence.csv :

TIME,RESULT,PARENTLOCALIZATIONCODE,PARENTNAME,SIGFOXID,STATUS
2018-12-10T00:06:14.5464070Z,OK,A,A,19A9BC,OFF_PERIOD

我试图阅读它,但 TIME 列输出错误:

data = sqlContext.read.csv(
'presence.csv',
header='true',
inferSchema= 'true',
sep=","
)

data.show(truncate=False)
+----------------------+------+----------------------+----------+--------+----------+
|TIME |RESULT|PARENTLOCALIZATIONCODE|PARENTNAME|SIGFOXID|STATUS |
+----------------------+------+----------------------+----------+--------+----------+
|2018-12-10 01:37:18.07|OK |A |A |19A9BC |OFF_PERIOD|
+----------------------+------+----------------------+----------+--------+----------+

我首先想到我的服务器和 gmt 时间之间的时间差,但一个是 00:06:14 另一个是 01:37:18 所以关于 01:31 的差异很奇怪。

你知道为什么会发生这种转变吗?

最佳答案

来自 pyspark.sql.DataFrameReader.csv 的文档,默认的 timestampFormat 是:

您的数据的主要问题是您在几分之一秒内有 3 个额外值。因此,对于此数据,您需要使用 timestampFormat="yyyy-MM-dd'T'hh:mm:ss:SSSSSSZZ"

data = spark.read.csv(
'presence.csv',
header='true',
inferSchema= 'true',
sep=",",
timestampFormat="yyyy-MM-dd'T'hh:mm:ss:SSSSSSZZ"
)

data.show(truncate=False)
#+-----------------------+------+----------------------+----------+--------+----------+
#|TIME |RESULT|PARENTLOCALIZATIONCODE|PARENTNAME|SIGFOXID|STATUS |
#+-----------------------+------+----------------------+----------+--------+----------+
#|2018-12-09 19:06:14.546|OK |A |A |19A9BC |OFF_PERIOD|
#+-----------------------+------+----------------------+----------+--------+----------+

但是正如您在这里看到的,TIME 列正在转换为本地时间(在我的系统上是 GMT-4)。

如果这不是您想要的,“修复”取决于您的 spark 版本并且在 Spark Strutured Streaming automatically converts timestamp to local time 上的答案中有详细说明。 .

如果您应用特定于版本的“修复”,您会看到以下结果:

df.show(truncate=False)
#+-----------------------+------+----------------------+----------+--------+----------+
#|TIME |RESULT|PARENTLOCALIZATIONCODE|PARENTNAME|SIGFOXID|STATUS |
#+-----------------------+------+----------------------+----------+--------+----------+
#|2018-12-10 00:06:14.546|OK |A |A |19A9BC |OFF_PERIOD|
#+-----------------------+------+----------------------+----------+--------+----------+

引用资料:

关于python - spark read.csv 错误地解析时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54890169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com