Поделиться через


условие ошибки INCONSISTENT_BEHAVIOR_CROSS_VERSION

SQLSTATE: 42K0B

Вы можете получить другой результат из-за обновления системы до новой версии.

DATETIME_PATTERN_RECOGNITION

Spark >= 3.0:

Не удается распознать <pattern> шаблон в DateTimeFormatter.

  1. Вы можете установить <config> в значение "LEGACY", чтобы восстановить поведение, существовавшее до Spark 3.0.

  2. Вы можете сформировать допустимый шаблон даты и времени с помощью руководства из "<docroot>/sql-ref-datetime-pattern.html".

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+.

Дополнительные сведения см. в SPARK-31404. Вы можете задать SQL конфигурацию <config> или

Параметр <option> источника данных на "LEGACY" для изменения базы значений даты и времени.

Что касается разницы в календаре во время чтения. Чтение значений даты и времени

Как есть, задайте конфигурацию <config> SQL или параметр источника данных <option>.

к "CORRECTED".

Подлежит уточнению

Spark >= <sparkVersion>: <details>

WRITE_ANCIENT_DATETIME

Spark >= 3.0:

Запись дат до 1582-10-15 или меток времени до 1900-01-01T00:00:00Z в файлы <format> может быть опасной, так как файлы могут быть считаны Spark 2.x или устаревшими версиями Hive позже, которые используют устаревший гибридный календарь, отличный от пролептического григорианского календаря Spark 3.0+.

Дополнительные сведения см. в SPARK-31404.

Вы можете установить <config> значение "LEGACY", чтобы пересчитать значения datetime с учётом разницы в календаре при записи, для достижения максимальной совместимости.

Или задайте для конфигурации значение "CORRECTED" для записи значений даты и времени, если вы уверены, что записанные файлы будут считываться только Spark 3.0+ или другими системами, используюющими пролептический григорианский календарь.