pyspark to_timestamp() 返回空值

pyspark to_timestamp() returning nulls

我有一个带有微秒的时间戳字符串,如下所示:

+-------------------------+
|Time                     |
+-------------------------+
|22-10-2019 09:41:24.87816|
|22-10-2019 09:41:24.87818|
|22-10-2019 09:41:24.87820|
|22-10-2019 09:41:24.87821|
+-------------------------+

我想将它转换为 TimestampType()。 例如“22-10-2019 09:41:24.87816”应该是1571737284.87816.

我试过这个:

df= df.withColumn("timestamp", to_timestamp("Time", format="dd-MM-yyyy HH:mm:ss.SSSSS"))

还有这个:

df= df.withColumn("timestamp", col("Time").cast(TimestampType()))

但两个 return 都为空。我究竟做错了什么??

我可以用 datetime.strptime() 创建一个 UDF,但是那太慢了。 to_timestamp() 不应该工作吗?

SSS 仅适用于毫秒,从您的预期输出来看它似乎是纪元时间,因此您可以使用下面的代码

df.withColumn('unixtimewithmicros', F.concat(F.unix_timestamp('Time', format='dd-MM-yyyy HH:mm:ss'), F.lit('.'), F.split('Time', '\.')[1]))