我有一个来自源的日期字符串,格式为“Fri May 24 00:00:00 BST 2019”,我将使用类似我的示例的代码将其转换为日期并存储为“2019-05-24”对我来说在 spark 2.0 下
from pyspark.sql.functions import to_date, unix_timestamp, from_unixtime
df = spark.createDataFrame([("Fri May 24 00:00:00 BST 2019",)], ['date_str'])
df2 = df.select('date_str', to_date(from_unixtime(unix_timestamp('date_str', 'EEE MMM dd HH:mm:ss zzz yyyy'))).alias('date'))
df2.show(1, False)
Run Code Online (Sandbox Code Playgroud)
在我的沙箱环境中,我已经更新到 spark 3.0,现在上面的代码出现以下错误,是否有在 3.0 中执行此操作的新方法将我的字符串转换为日期
: org.apache.spark.SparkUpgradeException: 由于 Spark 3.0 的升级,您可能会得到不同的结果:无法识别 DateTimeFormatter 中的“EEE MMM dd HH:mm:ss zzz yyyy”模式。
- 您可以将 spark.sql.legacy.timeParserPolicy 设置为 LEGACY 以恢复 Spark 3.0 之前的行为。
- 您可以使用https://spark.apache.org/docs/latest/sql-ref-datetime-pattern.html 中的指南形成有效的日期时间模式