Перенос конвейеров 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 имеет опыт, помогающий клиентам перенестися из большинства используемых сегодня систем данных и может иметь ресурсы, доступные для перехода к работе по миграции.