Интерпретация кодов ошибок в Synapse Analytics

Есть много факторов, которые влияют на то, почему приложение Spark не будет работать в Azure Synapse Analytics. Например, это может быть вызвано системной ошибкой или даже связанной с пользователем ошибкой. Ранее все ошибки, соответствующие завершившимся сбоем заданиям в Synapse Analytics, отображались с помощью универсального кода ошибки LIVY_JOB_STATE_DEAD. Этот код ошибки не предоставлял дополнительных сведений о том, почему задание завершилось сбоем. Для определения основной причины требовалось прилагать значительные усилия, чтобы изучить особенности работы драйвера и исполнителя, а также событий Spark и журналов Livy, и найти решение.

Снимок экрана: код ошибки Apache Spark без подробного сообщения.

Мы представили более точный список кодов ошибок, который заменит предыдущее общее сообщение. Новое сообщение описывает причину сбоя. При сбое задания в Azure Synapse Analytics функция обработки ошибок анализирует и проверяет журналы в серверной части, чтобы определить первопричину. Затем пользователю отображается сообщение на панели мониторинга, а также действия по устранению проблемы.

Снимок экрана: код ошибки Apache Spark с подробным сообщением.

Включение классификации ошибок в Synapse

Функцию классификации ошибок можно включить или отключить, задав для следующей конфигурации Spark значение true или false на уровне задания или пула:

livy.rsc.synapse.error-classification.enabled

В следующем разделе перечислены некоторые типы ошибок, которые сейчас поддерживаются. Мы постоянно совершенствуем и добавляем новые коды ошибок, улучшая нашу модель.

Категории кодов ошибок

Каждый код ошибки относится к одному из следующих четырех сегментов:

  1. User — указывает на ошибку пользователя.
  2. System — указывает на системную ошибку.
  3. Ambiguous — может быть либо ошибка пользователя, либо системная ошибка.
  4. Unknown — классификация пока отсутствует, скорее всего, из-за того, что тип ошибки не включен в модель.

Примеры кодов ошибок для каждого типа классификации

Spark_User_TypeError_TypeNotIterable

В Python ошибка TypeError: argument of type 'insert type' is not iterable возникает, когда оператор членства (in, not in) используется для проверки принадлежности значения к неитерируемым объектам, таким как список, кортеж, словарь. Обычно это связано с поиском значения в неизменяемом объекте. Возможные решения:

  • Проверьте, присутствует ли значение в итерируемом объекте.
  • Если вы хотите сверить одно значение с другим, используйте логический оператор вместо оператора членства.
  • Если оператор членства содержит значение None, он не сможет выполнить итерацию, и потребуется выполнить проверку на наличие значения null или назначенного значения по умолчанию.
  • Проверьте, что тип используемого значения можно проверить и что вводимые данные правильные.

Spark_System_ABFS_OperationFailed

Сбой операции с ADLS 2-го поколения.

Эта ошибка обычно возникает из-за проблемы с разрешениями.

Убедитесь, что для всех ресурсов ADLS 2-го поколения, на которые ссылается задание Spark, есть роль RBAC "Участник данных BLOB-объекта хранилища" в учетных записях хранения, из которых задание должно выполнять чтение и запись. Проверьте журналы для этого приложения Spark. Перейдите в Synapse Studio и выберите вкладку Монитор в области слева. В разделе Действия выберите Приложения Apache Spark и найдите задание Spark в списке. Для имени учетной записи хранения ADLS 2-го поколения, в которой возникла эта проблема, проверьте журналы, доступные на вкладке Журналы в нижней части этой страницы.

Spark_Ambiguous_ClassLoader_NoClassDefFound

Не удалось найти класс, требуемый для кода, при выполнении скрипта.

Дополнительные сведения см. на следующих страницах документации по управлению пакетами:

Для сценариев с Notebook: Управление пакетами для интерактивных заданий в Apache Spark.

Для сценариев с пакетной службой Spark (см. раздел 6): Управление пакетами для пакетных заданий в Apache Spark.

Убедитесь, что все зависимости кода включены в выполнения JAR-файлов Synapse. Если вы не включаете или не можете включить сторонние JAR-файлы в собственный код, убедитесь, что все зависимости включены в пакеты рабочей области для пула Spark, в котором вы выполняете код, или что они включены в список "Справочные файлы" для пакетной отправки Spark. Дополнительные сведения см. в документации выше.

Spark_Unknown_Unknown_java.lang.Exception

Неизвестный сбой, модель не смогла выполнить классификацию.

Коды ошибок (включая приведенный выше список и не только) вместе с инструкциями по устранению неполадок будут отображаться в области ошибок приложения Synapse Studio, если эта функция включена.

Примечание

Если вы создали какое-либо средство для задания мониторинга Synapse, которое проверяет завершившееся сбоем задание, фильтруя код ошибки LIVY_JOB_STATE_DEAD, ваше приложение больше не будет работать. Возвращенные коды ошибок будут отличаться, как упоминалось выше. Измените все скрипты соответствующим образом, чтобы использовать эту функцию или отключите ее, если она не нужна.