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]))
我有一个带有微秒的时间戳字符串,如下所示:
+-------------------------+
|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]))