You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PySpark中使用新时间解析策略解析日期字符串?

在PySpark中用非LEGACY策略解析带星期的日期字符串

问题原因

Spark 3.0+默认使用CORRECTED日期解析策略(替代旧的LEGACY),该策略对日期格式与本地化设置的匹配要求更严格。你的日期字符串中的Sun是英文星期缩写,若会话默认Locale不是英文,E模式无法识别该缩写,导致解析失败。

解决方案

方法1:在SQL函数中直接指定Locale

Spark 3.0+的to_date函数支持第三个参数显式指定Locale,无需修改全局配置,精准适配英文星期缩写:

spark.conf.unset("spark.sql.legacy.timeParserPolicy")
spark.sql("SELECT to_date('2020-09-20 Sun', 'yyyy-MM-dd E', 'en_US') AS Parsed").show()

方法2:设置全局会话Locale

如果需要批量处理同类型日期,可以全局设置会话的Locale为英文,后续所有日期解析都会沿用该配置:

from pyspark.sql import SparkSession

# 初始化SparkSession时配置
spark = SparkSession.builder \
    .appName("DateParseDemo") \
    .config("spark.sql.locale", "en_US") \
    .getOrCreate()

# 若已存在Session,可动态修改配置
spark.conf.set("spark.sql.locale", "en_US")

# 执行解析查询
spark.sql("SELECT to_date('2020-09-20 Sun', 'yyyy-MM-dd E') AS Parsed").show()

验证结果

执行上述代码后,会正确输出解析后的日期:

+----------+
|    Parsed|
+----------+
|2020-09-20|
+----------+

内容的提问来源于stack exchange,提问作者dallascow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 21:13:12