Apache spark 将带时区的字符串转换为时间戳spark 3.0
我使用DataRicks接收csv,并且有一个列需要从字符串转换为时间戳。数据以字符串形式输入,格式如下:31-MAR-27 10.59.00.000000 PM GMT 我使用的代码是python,集群运行的是spark 3.0.1。我以前使用过下面的代码,但没有使用AM/PM或时区,并且我无法得到一种不对每个值都返回null的格式Apache spark 将带时区的字符串转换为时间戳spark 3.0,apache-spark,pyspark,apache-spark-sql,timestamp,timestamp-with-timezone,Apache Spark,Pyspark,Apache Spark Sql,Timestamp,Timestamp With Timezone,我使用DataRicks接收csv,并且有一个列需要从字符串转换为时间戳。数据以字符串形式输入,格式如下:31-MAR-27 10.59.00.000000 PM GMT 我使用的代码是python,集群运行的是spark 3.0.1。我以前使用过下面的代码,但没有使用AM/PM或时区,并且我无法得到一种不对每个值都返回null的格式 df.withColumn('columnName', to_timestamp(col('columnName'),'dd-MMM-yy HH.mm.ss.SS
df.withColumn('columnName', to_timestamp(col('columnName'),'dd-MMM-yy HH.mm.ss.SSSSSS a zzz').cast(TimestampType()))
我使用此文档来帮助您因为您的时间戳中有am/pm,所以您应该使用小写的
h
表示am pm(1-12),而不是h
,后者表示一天中的小时(0-23)
请注意,不需要强制转换为时间戳类型,因为to_timestamp
已返回时间戳类型列
df2 = df.withColumn(
'columnName',
to_timestamp(col('columnName'), 'dd-MMM-yy hh.mm.ss.SSSSSS a zzz')
)