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


Перенос конвейеров ETL в Azure Databricks

В этой статье представлен обзор вариантов переноса конвейеров извлечения, преобразования, загрузки (ETL), работающих в других системах данных в Azure Databricks. Если вы переносите код Apache Spark, ознакомьтесь с примером адаптации кода Apache Spark для Azure Databricks.

Общие сведения о переходе из корпоративного хранилища данных в lakehouse см. в статье "Миграция хранилища данных в databricks lakehouse". Сведения о переходе из Parquet в Delta Lake см. в разделе "Миграция озера данных Parquet" в Delta Lake.

Можно ли запускать конвейеры Hive в Azure Databricks?

Большинство рабочих нагрузок Hive могут выполняться в Azure Databricks с минимальным рефакторингом. Версия SQL Spark, поддерживаемая Databricks Runtime, позволяет создавать множество конструкций HiveQL. См. статью о совместимости Apache Hive. Azure Databricks включает хранилище метаданных Hive по умолчанию. Большинство миграций Hive должны решить несколько основных проблем:

  • Hive SerDe необходимо обновить для использования кодеков файлов Azure Databricks. (Измените DDL на STORED AS USING использование Azure Databricks SerDe.)
  • Определяемые пользователем функции Hive должны быть установлены в кластерах как библиотеки или рефакторинг в собственный Spark. Так как определяемые пользователем функции Hive уже находятся в JVM, они могут обеспечить достаточную производительность для многих рабочих нагрузок. См. раздел Вопросы производительности.
  • Структура каталогов для таблиц должна быть изменена, так как Azure Databricks использует секции по-разному, чем Hive. Сведения о секционирования таблиц в Azure Databricks.

Если вы решили обновить таблицы до Delta Lake во время первоначальной миграции, то некоторые инструкции DDL и DML не поддерживаются. Например:

  • ROWFORMAT
  • SERDE
  • OUTPUTFORMAT
  • INPUTFORMAT
  • COMPRESSION
  • STORED AS
  • ANALYZE TABLE PARTITION
  • ALTER TABLE [ADD|DROP] PARTITION
  • ALTER TABLE RECOVER PARTITIONS
  • ALTER TABLE SET SERDEPROPERTIES
  • CREATE TABLE LIKE
  • INSERT OVERWRITE DIRECTORY
  • LOAD DATA
  • Указание целевых секций с помощью PARTITION (part_spec) в TRUNCATE TABLE

Можно ли запускать конвейеры ETL SQL в Azure Databricks?

Перенос рабочих нагрузок SQL из других систем в Azure Databricks обычно требует очень мало рефакторинга в зависимости от степени использования определенных системных протоколов в исходном коде. Azure Databricks использует Delta Lake в качестве формата таблицы по умолчанию, поэтому таблицы создаются с гарантиями транзакций по умолчанию.

Spark SQL в основном соответствует ANSI, но некоторые различия в поведении могут существовать. Узнайте , как платформа аналитики данных Databricks отличается от корпоративного хранилища данных?.

Так как системы данных, как правило, настраивают доступ к внешним данным по-разному, большая часть рабочих конвейеров ETL SQL может настраивать доступ к этим источникам данных, а затем обновлять логику для использования этих новых подключений. Azure Databricks предоставляет возможности подключения ко многим источникам данных для приема.

Можно ли запустить конвейеры dbt ETL в Azure Databricks?

Azure Databricks обеспечивает встроенную интеграцию с dbt, что позволяет использовать существующие скрипты dbt с очень небольшим рефакторингом.

Delta Live Table предоставляет оптимизированный декларативный синтаксис Databricks для создания, тестирования и развертывания конвейеров. Хотя вы можете использовать dbt в Azure Databricks, легкий рефакторинг кода в Delta Live Tables может снизить общую стоимость работы конвейеров в Azure Databricks. См. раздел "Что такое разностные динамические таблицы?".

Можно ли перенести бессерверные облачные функции в Azure Databricks?

Расширяемость и гибкость пользовательских бессерверных облачных функций затрудняет предоставление общей рекомендации, но одним из наиболее распространенных вариантов использования этих функций является ожидание отображения файлов или данных в расположении или очереди сообщений, а затем выполнение некоторых действий в результате. Хотя Azure Databricks не поддерживает сложную логику для активации рабочих нагрузок в зависимости от облачных условий, вы можете использовать структурированную потоковую передачу в сочетании с заданиями для постепенной обработки данных.

Используйте автозагрузчик для оптимизированного приема данных из облачного хранилища объектов. Структурированная потоковая передача может обрабатывать данные из источников потоковой передачи практически в реальном времени.

Можно ли выполнять синтаксис из других систем данных в Azure Databricks?

Конвейеры ETL, определенные на языках, отличных от SQL, Apache Spark или Hive, могут быть сильно рефакторингированы перед запуском в Azure Databricks. Azure Databricks имеет опыт, помогающий клиентам перенестися из большинства используемых сегодня систем данных и может иметь ресурсы, доступные для перехода к работе по миграции.