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


Перенос конвейеров 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 с очень небольшим рефакторингом.

Декларативные конвейеры Lakeflow Spark предоставляют оптимизированный синтаксис декларативного SQL, нативного для Databricks, для создания, тестирования и развертывания конвейеров. Хотя вы можете использовать dbt в Azure Databricks, легкий рефакторинг кода с использованием Lakeflow Spark Declarative Pipelines может снизить общую стоимость эксплуатации ваших конвейеров в Azure Databricks. См. Lakeflow Spark декларативные конвейеры.

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

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

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

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

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