PySpark:字符串到时间戳的转换

PySpark:字符串到时间戳的转换,pyspark,Pyspark,我正在处理时间数据,并尝试将字符串转换为时间戳格式 下面是“时间”列的外观 +----------+ | Time | +----------+ |1358380800| |1380672000| +----------+ 这是我想要的 +---------------+ | Time | +---------------+ |2013/1/17 8:0:0| |2013/10/2 8:0:0| +---------------+ 我找到了一些类似的问题和答案,并尝

我正在处理时间数据,并尝试将字符串转换为时间戳格式

下面是“时间”列的外观

+----------+
|  Time    |
+----------+
|1358380800|
|1380672000|
+----------+
这是我想要的

+---------------+
|  Time         |
+---------------+
|2013/1/17 8:0:0|
|2013/10/2 8:0:0|
+---------------+
我找到了一些类似的问题和答案,并尝试了这些代码,但都以“null”结尾

df2 = df.withColumn("Time", test["Time"].cast(TimestampType()))

df2 = df.withColumn('Time', F.unix_timestamp('Time', 'yyyy-MM-dd').cast(TimestampType()))

好吧,你的做法正好相反。sql函数将给定格式的字符串转换为unix时间戳。如果要将unix时间戳转换为datetime格式,则必须使用sql函数:

from pyspark.sql import functions as F
from pyspark.sql import types as T
l1 = [('1358380800',),('1380672000',)]
df = spark.createDataFrame(l1,['Time'])
df.withColumn('Time', F.from_unixtime(df.Time).cast(T.TimestampType())).show()
输出:

+-------------------+ 
|               Time|
+-------------------+
|2013-01-17 01:00:00|
|2013-10-02 02:00:00|
+-------------------+