Адаптация экссизивного кода Apache Spark для Azure Databricks
В этой статье описаны необходимые изменения для адаптации существующих рабочих нагрузок Apache Spark для запуска в Azure Databricks. Независимо от того, переходите ли вы в Azure Databricks из локального кластера, настраиваемой облачной инфраструктуры или другого корпоративного предложения Apache Spark, большинство рабочих нагрузок требуют лишь нескольких изменений для перехода в рабочую среду. Azure Databricks расширяет, упрощает и повышает производительность Apache Spark, внедряя пользовательские оптимизации, настраивая и развертывая инфраструктуру, а также поддерживая зависимости в среде выполнения Databricks.
Внимание
При обновлении версий Apache Spark могут возникнуть критические изменения в синтаксисе. Ознакомьтесь с заметками о выпуске Databricks Runtime и версиями совместимости и руководством по миграции Spark.
Переход parquet
на delta
Databricks рекомендует использовать Delta Lake вместо Parquet или ORC при записи данных. Azure Databricks оптимизировано для повышения эффективности при взаимодействии с таблицами, поддерживаемыми Delta Lake, и обновление данных и формы кода Parquet до Delta Lake выполняет лишь несколько шагов. См. статью "Миграция озера данных Parquet в Delta Lake".
Так как Delta Lake предоставляет гарантии транзакций ACID, вы можете упростить рабочие нагрузки для удаления обходных решений, направленных на создание псевдо транзакций в операциях Apache Spark. Вот некоторые примеры.
- Создание структуры каталога или стратегии секционирования, которая позволяет одновременно обнаруживать все файлы из данной операции в рамках секции.
- Настройка или использование хранилища метаданных для добавления транзакций для обнаружения новых данных.
- Использование
MSCK repair
для регистрации файлов, записанных в таблицу в хранилище метаданных. - Использование
alter table add partition
для ручного добавления секций в таблицу.
Сведения о секционирования таблиц в Azure Databricks.
Примечание.
Рабочие нагрузки можно запускать без обновления используемых форматов данных, но многие из самых больших показателей производительности в Azure Databricks привязаны непосредственно к Delta Lake.
Перекомпилируйте код Apache Spark с совместимыми библиотеками Databricks Runtime
Каждая версия Databricks Runtime предварительно настроена с множеством библиотек, необходимых в приложениях Apache Spark. Вы можете установить дополнительные библиотеки для вычислений по мере необходимости, но по возможности Databricks рекомендует использовать версии библиотек, упакованные в databricks Runtime, которые тестируются для обеспечения совместимости. Каждый выпуск Databricks Runtime содержит список всех установленных библиотек. См . заметки о выпуске Databricks Runtime и версии совместимости.
Удаление команд создания SparkSession
Многие устаревшие рабочие нагрузки Apache Spark явно объявляют новую версию SparkSession для каждого задания. Azure Databricks автоматически создает SparkContext для каждого вычислительного кластера и создает изолированное средство SparkSession для каждой записной книжки или задания, выполняемого в кластере. Вы можете поддерживать возможность локальной компиляции и тестирования кода, а затем развернуть в Azure Databricks, обновив эти команды для использования SparkSession.builder().getOrCreate()
.
Удаление команд скрипта терминала
Apache Spark требует, чтобы программы явно объявляли о том, что они завершены с помощью таких команд, как sys.exit()
или sc.stop()
. Azure Databricks автоматически завершает работу и очищает задания по мере их завершения, поэтому эти команды не нужны и должны быть удалены.
Azure Databricks также автоматически завершает работу и очищает структурированные рабочие нагрузки потоковой передачи при завершении выполнения, чтобы удалить awaitTermination()
и аналогичные команды из структурированных приложений потоковой передачи.
Доверие к Azure Databricks для настройки кластера
Azure Databricks настраивает все параметры драйвера и исполнителя в вычислительном кластере автоматически для повышения устойчивости и использования ресурсов. Предоставление пользовательских конфигураций для исполнителей или JVM может привести к снижению производительности. Databricks рекомендует устанавливать только конфигурации Spark, необходимые для управления обработкой типов или функциями, чтобы логика оставалась согласованной.
Запуск рабочих нагрузок
Теперь, когда вы удалили шаблоны, команды и параметры, которые могут повлиять на выполнение Azure Databricks, вы можете запускать рабочие нагрузки в тестовой среде и сравнивать производительность и результаты с устаревшей инфраструктурой. Хотя многие навыки вашей команды, возможно, разработали для устранения неполадок и повышения производительности рабочих нагрузок Apache Spark, по-прежнему можно использовать в Azure Databricks, чаще всего вы можете увидеть более широкие преимущества от действий по обновлению, чтобы использовать новые функции в Apache Spark, Delta Lake или пользовательских продуктах Azure Databricks.