时间戳转换不匹配?

时间:2019-06-12 09:49:05

标签: apache-spark pyspark unix-timestamp

我有一个数据库,我想在其中保存具有特定格式的可读时间戳ass字符串。 我得到的输入数据帧具有类型为“时间戳”的timstamp。 为了进行计算,我将它们转换为unix-timestamps。结果以字符串格式的时间戳记返回数据库。 问题是,当我将这些字符串格式的时间戳转换回unix时,我会遇到不匹配的值。

那怎么会发生?

time_format = "YYYY-MM-dd'T'HH:mm:ssz"
dummy = df.withColumn('start_time_unix', f.unix_timestamp('start_time'))\
          .withColumn('start_time_string', f.from_unixtime('start_time_unix', format=time_format))\
          .withColumn('start_time_unix_2', f.unix_timestamp('start_time_string', format=time_format))                          
dummy.printSchema()
dummy.show(10, False)
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       |
+-------------------+---------------+-----------------------+-----------------+

编辑

输入数据帧是根据以下条件生成的:

df = spark.read.csv('data.csv', header=True, inferSchema=True)

csv包含以下行:“ 2019-06-04 00:39:08”(不包含“)

0 个答案:

没有答案