首页 > 解决方案 > 尝试将字符串转换为 pyspark 数据帧中的 unix_timestamp 数据类型时出现 SparkUpgrade 异常

问题描述

我正在使用 spark3.1.1 并尝试使用以下代码将字符串数据类型转换为 unix_timestamp 数据类型。

pattern = 'yyyy/MM/dd hh:mm:ss aa'
file_new = file1.withColumn('Incident_DateTime', unix_timestamp(file1['Incident_DateTime'], pattern).cast('timestamp'))  
file_new.select('Incident_DateTime').show(5, False)

所有操作都出错 -> 选择/显示/显示。PFB 快照和帮助

org.apache.spark.SparkUpgradeException:由于 Spark 3.0 的升级,您可能会得到不同的结果:无法识别 DateTimeFormatter 中的 'yyyy/MM/dd hh:mm:ss aa' 模式。1)您可以将 spark.sql.legacy.timeParserPolicy 设置为 LEGACY 以恢复 Spark 3.0 之前的行为。2)您可以使用https://spark.apache.org/docs/latest/sql-ref-datetime-pattern.html中的指南形成有效的日期时间模式

标签: apache-sparkpysparkcasting

解决方案


从您问题中的链接:

"am-pm: 这将输出 am-pm-of-day。模式字母计数必须为 1。",

所以模式应该是一个'a':

'yyyy/MM/dd hh:mm:ss a'

推荐阅读