我有一个数据库,我想在其中保存具有特定格式的可读时间戳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”(不包含“)