火花读取.csv错误分析时间戳

2024-10-03 21:33:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我的datalake中有一个csv文件presence.csv

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

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

^{pr2}$

我首先考虑了我的服务器和gmt时间之间的时差,但是一个是00:06:14,另一个是{},所以关于{}的差异,这很奇怪。在

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


Tags: 文件csvtimestatus错误okresultperiod
1条回答
网友
1楼 · 发布于 2024-10-03 21:33:04

^{}的文档中,默认的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上的答案中详细说明。在

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

^{pr2}$

参考文献:

相关问题 更多 >