Apache spark 时间戳转换错误匹配?
我有一个数据库,我想用特定的格式将可读的时间戳保存到字符串中。 我得到的输入数据帧具有类型为“timestamp”的timstamps。 对于计算,我将它们转换为unix时间戳。结果作为字符串格式的时间戳返回数据库。 问题是,当我将这些字符串格式的时间戳转换回unix时,我的值不匹配 怎么会这样Apache spark 时间戳转换错误匹配?,apache-spark,pyspark,unix-timestamp,Apache Spark,Pyspark,Unix Timestamp,我有一个数据库,我想用特定的格式将可读的时间戳保存到字符串中。 我得到的输入数据帧具有类型为“timestamp”的timstamps。 对于计算,我将它们转换为unix时间戳。结果作为字符串格式的时间戳返回数据库。 问题是,当我将这些字符串格式的时间戳转换回unix时,我的值不匹配 怎么会这样 time\u format=“YYYY-MM-dd'T'HH:MM:ssz” dummy=df.withColumn('start\u time\u unix',f.unix\u timestamp('
time\u format=“YYYY-MM-dd'T'HH:MM:ssz”
dummy=df.withColumn('start\u time\u unix',f.unix\u timestamp('start\u time'))\
.withColumn('start_time_string',f.from_unixtime('start_time_unix',format=time_format))\
.withColumn('start\u time\u unix\u 2',f.unix\u timestamp('start\u time\u string',format=time\u format))
dummy.printSchema()
虚拟显示(10,假)
编辑
输入数据帧是根据以下内容生成的:
df=spark.read.csv('data.csv',header=True,inferSchema=True)
由于csv包含诸如“2019-06-04 00:39:08”(不带“)之类的行,我很好奇数据是如何插入的。当应用程序(通过客户端)中存在隐含格式时,我会看到这一点但是,服务器上的UTC值偏离了一个多小时,这给我留下了一个问题,而不是答案。我添加了一个关于如何创建输入数据帧的简短描述。是的,一个或两个多小时的时差这一事实对我来说很奇怪。我很好奇数据是如何插入的。我看到了这一点在应用程序(通过客户端)和服务器上的UTC中是一种隐含格式,但是您的值偏离了一个多小时,这给我留下了一个问题,而不是答案。我添加了一个关于如何创建输入数据帧的简短描述。是的,一个或两个多小时的时差对我来说很奇怪。
OUTPUT
root
|-- start_time: timestamp (nullable = true)
|-- start_time_unix: long (nullable = true)
|-- start_time_string: string (nullable = true)
|-- start_time_unix_2: long (nullable = true)
+-------------------+---------------+-----------------------+-----------------+
|start_time |start_time_unix|start_time_string |start_time_unix_2|
+-------------------+---------------+-----------------------+-----------------+
|2019-06-04 00:39:08|1559601548 |2019-06-04T00:39:08CEST|1546123148 |
+-------------------+---------------+-----------------------+-----------------+