使用pyspark将unix_时间戳转换为utc_时间戳,unix_时间戳不起作用

使用pyspark将unix_时间戳转换为utc_时间戳,unix_时间戳不起作用,pyspark,unix-timestamp,date-conversion,Pyspark,Unix Timestamp,Date Conversion,我有一个字符串列,在pyspark数据帧中包含unix_tstamp unix_tstamp utc_stamp 1547741586462 2019-01-17 16:13:06:462 1547741586562 2019-01-17 16:13:06:562 1547741586662 2019-01-17 16:13:06:662 1547741586762 2019-01-17 16:13:06:762 1547741586862

我有一个字符串列,在pyspark数据帧中包含unix_tstamp

unix_tstamp       utc_stamp

1547741586462     2019-01-17 16:13:06:462
1547741586562     2019-01-17 16:13:06:562
1547741586662     2019-01-17 16:13:06:662
1547741586762     2019-01-17 16:13:06:762
1547741586862     2019-01-17 16:13:06:862
我确实想以上面的格式执行转换,但是当我尝试下面的方法时,我得到了null

data.withColumn(“utc_stamp”,unix_时间戳(“unix_tstamp”,“yyyy-MM-dd'T'HH:MM:ss.SSSZ”))


我是否遗漏了某些内容或有其他方法?

您可以指定如下格式:

df = df.withColumn('utc_stamp', F.from_unixtime('Timestamp', format="YYYY-MM-dd HH:mm:ss.SSS"))

df.show(truncate=False)

+----------+-----------------------+
|Timestamp |utc_stamp              |
+----------+-----------------------+
|1579887004|2020-01-24 18:30:04.000|
|1579887004|2020-01-24 18:30:04.000|
+----------+-----------------------+
样本数据


你的模式不匹配。字符串中没有
'T'
,并且末尾不应该有
Z
。请尝试
“yyyy-MM-dd HH:MM:ss.SSS”
即使尝试了您的格式,新列中仍显示null。最后一个句点应为冒号。您必须使字符串与模式匹配
null
表示模式错误。搜索Java简单日期格式
# today's datestamp
d = [[1579887004],
     [1579887004],
    ]

df = spark.createDataFrame(d, ['Timestamp'])