跨版本不一致行为错误类

SQLSTATE: 42K0B

由于升级到,您可能会获得不同的结果

该错误类具有以下派生错误类:

日期时间模式识别

Spark >= 3.0: 无法识别 模式在 DateTimeFormatter 中。1) 您可以将 设置为“LEGACY”以恢复 Spark 3.0 之前的行为。2) 您可以参考 ‘ /sql-ref-datetime-pattern.html’ 来形成有效的日期时间模式。

通过新解析器解析日期时间

Spark >= 3.0: 在新的解析器中解析 失败。您可以将 设置为“LEGACY”以恢复Spark 3.0之前的行为,或设置为“CORRECTED”将其视为无效的日期时间字符串。

读取古代日期时间

Spark >= 3.0: 读取1582年10月15日之前的日期或1900年01月01日00:00:00Z之前的时间戳 来自 文件可能会产生歧义,因为这些文件可能是由 Spark 2.x或旧版本的Hive编写的,后者使用的是与Spark 3.0+的先验公历 不同的传统混合日历。 有关更多详情,请参见SPARK-31404。您可以设置SQL配置 或 数据源选项 为“LEGACY”以重新基准化日期时间值 以应对读取时的日历差异。要按原样读取日期时间值, 请将SQL配置或数据源选项设置为“CORRECTED”。

写入古代日期时间

Spark >= 3.0: 在将日期写入 1582-10-15 之前或在 1900-01-01T00:00:00Z 之前的时间戳 到 文件时可能会存在风险,因为这些文件可能会被 Spark 2.x 或后续的旧版本 Hive 读取,这些版本使用的是不同于 Spark 3.0+ 的前瞻格里历的旧混合日历。请参见 SPARK-31404 中的更多细节。您可以将 设置为“LEGACY”,以根据日历差异重新基准 写入时的日期时间值,以获得最大的互操作性。或者将配置设置为“CORRECTED”,以按原样写入日期时间值,如果您确定书写的文件只会被 Spark 3.0+ 或其他使用前瞻格里历的系统读取。