使用pyspark将unix_时间戳转换为utc_时间戳,unix_时间戳不起作用
我有一个字符串列,在pyspark数据帧中包含unix_tstamp使用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
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'])