INCONSISTENT_BEHAVIOR_CROSS_VERSION错误条件

SQLSTATE:42K0B

您可能会得到不同的结果,这是由于升级至新的版本。

DATETIME_PATTERN_RECOGNITION

Spark >= 3.0:

无法识别 DateTimeFormatter 中的 <pattern> 模式。

  1. 可以设置为 <config>LEGACY”,以在 Spark 3.0 之前还原行为。

  2. 可以使用“/sql-ref-datetime-pattern.html”<docroot>中的指南形成有效的日期/时间模式。

DATETIME_WEEK_BASED_PATTERN

Spark >= 3.0:

从 Spark 3.0 开始,不支持所有基于周的模式,检测到基于周的字符:<c>

请改用 SQL 函数 EXTRACT

PARSE_DATETIME_BY_NEW_PARSER

Spark >= 3.0:

无法在新的分析程序中分析 <datetime>

可以设置为 <config>LEGACY”以还原 Spark 3.0 之前的行为,或设置为“CORRECTED”并将其视为无效的日期/时间字符串。

READ_ANCIENT_DATETIME

Spark >= 3.0:

从文件中读取 1582-10-15 之前的日期或 1900-01-01T00:00:00Z 之前的时间戳

可能会造成歧义,因为这些 <format> 文件可能是

由 Spark 2.x 或旧版本的 Hive 编写的,其使用

与 Spark 3.0+ 使用的 Proleptic 公历不同。

请参阅 SPARK (-31404) 中的更多详细信息。 可以将 SQL 配置 <config>

将数据源选项<option>设置为“LEGACY”以调整日期时间值。

根据日历差异重新设置日期/时间值。 要按原样读取日期/时间值,

按原样将日期/时间值变基、设置 SQL 配置 <config> 或数据源选项 <option>

为“CORRECTED”。

TBD

Spark >= <sparkVersion><details>

WRITE_ANCIENT_DATETIME

Spark >= 3.0:

将 1582-10-15 之前的日期或 1900-01-01-01T00:00:00Z 之前的时间戳写入 <format> 文件可能很危险,因为 Spark 2.x 或旧版 Hive 稍后可能会读取这些文件,后者使用不同于 Spark 3.0+ 的 Proleptic 公历的旧混合日历。

有关详细信息,请参阅SPARK-31404。

可以将 <config> 设置为“LEGACY”,以在写入期间根据日历差异重新定义日期/时间值,以获得最大的互操作性。

或者将配置设置为“CORRECTED”以保持不变地写入日期时间值,前提是你确定写入的文件只会被 Spark 3.0+ 或其他使用 Proleptic 公历的系统读取。