Преобразование данных
В этой статье приведены общие сведения о преобразовании данных с помощью Azure Databricks. Преобразование данных или подготовка данных является ключевым шагом во всех рабочих нагрузках по проектированию данных, аналитике и машинному обучению.
Примеры моделей и рекомендации в этой статье касаются работы с таблицами лейкхаус, которые поддерживаются Delta Lake. Поскольку Delta Lake предоставляет гарантии ACID озера Databricks, при работе с данными в других форматах или системах данных может наблюдаться другое поведение.
Databricks рекомендует прием данных в озеро в необработанном или почти необработанном состоянии, а затем применение преобразований и обогащения в качестве отдельного шага обработки. Этот шаблон называется архитектурой медальона. См. статью "Что такое архитектура медальона lakehouse?".
Если вы знаете, что данные, необходимые для преобразования, еще не загружены в озеро, см . сведения о приеме данных в озера Databricks. Если вы пытаетесь найти данные Lakehouse для записи преобразований против, см. статью "Обнаружение данных".
Все преобразования начинаются с написания пакетного или потокового запроса к источнику данных. Если вы не знакомы с запросами данных, см. статью "Запрос данных".
После сохранения преобразованных данных в разностную таблицу можно использовать эту таблицу в качестве таблицы компонентов для машинного обучения. См . проектирование компонентов и обслуживание.
Примечание.
В статьях здесь рассматриваются преобразования в Azure Databricks. Azure Databricks также поддерживает подключения ко многим общим платформам подготовки данных. См. статью "Подключение к партнерам по подготовке данных" с помощью Partner Connect.
Преобразования Spark и преобразования Lakehouse
В этой статье основное внимание уделяется определению tranformations , так как они относятся к T в ETL или ELT. Модель обработки Apache Spark также использует преобразование слов соответствующим образом. Кратко: в Apache Spark все операции определяются как преобразования или действия.
- Преобразования: добавьте в план некоторую логику обработки. Примеры включают чтение данных, соединения, агрегаты и приведение типов.
- Действия: активация логики обработки для оценки и вывода результата. Примеры включают запись, отображение или просмотр результатов, кэширование вручную или получение количества строк.
Apache Spark использует отложенную модель выполнения , то есть ни одна логика, определенная коллекцией операций, не будет оценена до запуска действия. Эта модель имеет важное значение при определении конвейеров обработки данных: используйте действия для сохранения результатов обратно в целевую таблицу.
Так как действия представляют собой узкие места обработки для оптимизации логики, Azure Databricks добавил множество оптимизаций в дополнение к тем, кто уже присутствует в Apache Spark, чтобы обеспечить оптимальное выполнение логики. Эти оптимизации учитывают все преобразования, инициируемые заданным действием одновременно, и найдите оптимальный план на основе физического макета данных. Кэширование данных вручную или возврат предварительных версий в рабочих конвейерах может прерывать эти оптимизации и привести к значительному увеличению затрат и задержки.
Поэтому мы можем определить преобразование lakehouse быть любой коллекцией операций, применяемых к одной или нескольким таблицам lakehouse, которые приводят к новой таблице lakehouse. Обратите внимание, что в то время как преобразования, такие как соединения и агрегаты, обсуждаются отдельно, можно объединить многие из этих шаблонов в одном шаге обработки и доверять оптимизаторам в Azure Databricks, чтобы найти наиболее эффективный план.
Каковы различия между потоковой и пакетной обработкой?
Хотя потоковая и пакетная обработка используют большую часть одного синтаксиса в Azure Databricks, каждая из них имеет собственную семантику.
Пакетная обработка позволяет определять явные инструкции по обработке фиксированного объема статических, не изменяющихся данных в виде одной операции.
Потоковая обработка позволяет определить запрос к несвязанным, постоянно растущим набору данных, а затем обрабатывать данные в небольших добавочных пакетах.
Пакетные операции в Azure Databricks используют Spark SQL или DataFrames, а потоковая обработка использует структурированную потоковую передачу.
Вы можете различать команды пакетного Apache Spark от структурированной потоковой обработки, проанализировав операции чтения и записи, как показано в следующей таблице.
Apache Spark | Структурированная потоковая передача | |
---|---|---|
Чтение | spark.read.load() |
spark.readStream.load() |
Запись | spark.write.save() |
spark.writeStream.start() |
Материализованные представления обычно соответствуют гарантиям пакетной обработки, но Delta Live Tables используется для инкрементального вычисления результатов, когда это возможно. Результаты, возвращаемые материализованным представлением, всегда эквивалентны пакетной оценке логики, но Azure Databricks стремится обрабатывать эти результаты постепенно, когда это возможно.
Таблицы потоковой передачи всегда вычисляют результаты постепенно. Так как многие источники потоковых данных сохраняют записи только в течение определенного периода времени или дней, модель обработки, используемая таблицами потоковой передачи, предполагает, что каждый пакет записей из источника данных обрабатывается только один раз.
Azure Databricks поддерживает использование SQL для записи потоковых запросов в следующих случаях использования:
- Определение таблиц потоковой передачи в каталоге Unity с помощью Databricks SQL.
- Определение исходного кода для конвейеров Delta Live Tables.
Примечание.
Вы также можете объявить потоковые таблицы в Delta Live Tables с помощью кода Python Structured Streaming.
Преобразования пакетной службы
Пакетные преобразования работают с хорошо определенным набором данных активов в конкретный момент времени. Преобразования пакетной службы могут быть однократными операциями, но часто являются частью запланированных заданий или конвейеров, которые регулярно выполняются для поддержания актуальности рабочих систем.
Добавочные преобразования
Добавочные шаблоны обычно предполагают, что источник данных доступен только для добавления и имеет стабильную схему. В следующих статьях содержатся сведения о нюансах добавочных преобразований в таблицах, которые испытывают обновления, удаления или изменения схемы:
- API APPLY CHANGES: упрощение захвата изменений данных с помощью Delta Live Tables
- Использование веб-канала изменений данных Delta Lake в Azure Databricks
- обновление схемы таблицы Delta Lake
- Чтение и запись потоков таблиц Delta
Преобразования в режиме реального времени
Delta Lake обеспечивает практически доступ к большим объемам данных для всех пользователей и приложений, запрашивающих lakehouse, но из-за затрат на запись файлов и метаданных в облачное хранилище объектов невозможно достичь задержки в реальном времени для многих рабочих нагрузок, записываемых в приемники Delta Lake.
Для приложений потоковой передачи с крайне низкой задержкой Databricks рекомендует выбирать системы источника и приемника, предназначенные для рабочих нагрузок в режиме реального времени, таких как Kafka. Azure Databricks можно использовать для обогащения данных, включая агрегаты, соединения между потоками и присоединение потоковых данных с медленно изменяющимися данными измерения, хранящимися в lakehouse.