跨版本不一致行为错误类
由于升级到,您可能会获得不同的结果
该错误类具有以下派生错误类:
日期时间模式识别
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+ 或其他使用前瞻格里历的系统读取。