Загрузка данных в Azure Databricks Lakehouse
Azure Databricks предлагает различные методы приема данных в озеро, поддерживаемое Delta Lake. В этой статье перечислены поддерживаемые средства приема и рекомендации по использованию метода на основе таких критериев, как источник данных и задержка.
методы приема веществ
Вы можете загружать данные в Databricks с помощью следующих методов:
- пакетная загрузка набора строк данных для нечастой обработки
- потоковое поступление данных отдельных строк данных или наборов строк данных по мере их поступления для обработки в реальном времени
Полученные данные загружаются в таблицы Delta , которые затем можно использовать в последующих данных и сценариях применения ИИ. Из-за архитектуры Databricks Lakehouse вам не нужно дублировать данные в разных вариантах использования, и вы можете использовать каталог Unity для централизованного управления доступом, аудита, происхождения и обнаружения данных во всех ваших данных.
прием пакетных данных
При пакетном приеме данные загружаются в виде наборов строк (или пакетов) в Databricks часто на основе расписания (например, каждый день) или запускаются вручную. Это является этапом "извлечение" в традиционных сценариях использования извлечения, преобразования и загрузки (ETL). Вы можете использовать пакетную приемку для загрузки данных из:
- Локальные файлы, такие как CSV
- Облачное хранилище объектов, включая Amazon S3, Azure Data Lake Storage и Google Cloud Storage
- Приложения SaaS, такие как Salesforce и базы данных, такие как SQL Server
Пакетная приемка поддерживает широкий спектр форматов источников файлов, включая CSV, TSV, JSON, XML, Avro, ORC, Parquet и текстовые файлы.
Databricks поддерживает как традиционные варианты приема пакетов, так и добавочного приема пакетов. Хотя традиционный прием пакетов обрабатывает все записи при каждом запуске, добавочная пакетная загрузка автоматически обнаруживает новые записи в источнике данных и игнорирует записи, которые уже были загружены. Это означает, что меньше данных необходимо обрабатывать и, как следствие, задания на загрузку данных выполняются быстрее и используют вычислительные ресурсы эффективнее.
традиционное (однократное) пакетное прием
Вы можете отправлять локальные файлы данных или скачивать файлы из общедоступного URL-адреса с помощью пользовательского интерфейса добавления данных. См. загрузку файлов.
инкрементное пакетное поглощение
В этом разделе описаны поддерживаемые инструменты инкрементного приема пакетов.
Потоковые таблицы
Команда SQL CREATE STREAMING TABLE
позволяет постепенно загружать данные в таблицы потоковой передачи из облачного хранилища объектов. См. CREATE STREAMING TABLE.
Пример: инкрементная пакетная загрузка с использованием потоковых таблиц
CREATE OR REFRESH STREAMING TABLE customers
AS SELECT * FROM read_files("/databricks-datasets/retail-org/customers/", "csv")
Коннектор облачного объектного хранилища Cloud
Автозагрузчик, встроенный соединитель облачного хранилища объектов, позволяет постепенно и эффективно обрабатывать новые файлы данных по мере их поступления в Amazon S3 (S3), Azure Data Lake Storage 2-го поколения (ALDS2) или Google Cloud Storage (GCS). См. автозагрузчика.
пример. Добавочное прием пакетного пакета с помощью автозагрузчика
df = spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.option("rescuedDataColumn", "_rescued_data")
.schema("/databricks-datasets/retail-org/customers/schema")
.load("/databricks-datasets/retail-org/customers/")
полностью управляемых коннекторов
Lakeflow Connect предоставляет полностью управляемые соединители для интеграции с приложениями SaaS, такими как Salesforce, и базами данных, такими как SQL Server. Управляемые соединители доступны с помощью следующих компонентов:
- Пользовательский интерфейс Databricks
- Интерфейс командной строки Databricks
- API Databricks
- Пакеты SDK Databricks
- Пакеты активов Databricks (DAB)
См. Lakeflow Connect.
прием потоковой передачи
При потоковой загрузке вы постоянно загружаете строки данных или пакеты строк данных по мере их создания, чтобы запрашивать их при поступлении практически в режиме реального времени. Вы можете использовать потоковую загрузку для загрузки потоковых данных из источников, таких как Apache Kafka, Amazon Kinesis, Google Pub/Sub и Apache Pulsar.
Databricks также поддерживает прием потоковой передачи с помощью встроенных соединителей. Эти соединители позволяют постепенно и эффективно обрабатывать новые данные по мере поступления из источников потоковой передачи. См. раздел "Настройка источников данных потоковой передачи".
пример : прием потоковой передачи из Kafka
spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "<server:ip>")
.option("subscribe", "topic1")
.option("startingOffsets", "latest")
.load()
пакетная и потоковая загрузка с помощью DLT
Databricks рекомендует использовать DLT для создания надежных и масштабируемых конвейеров обработки данных. DLT поддерживает прием пакетов и потоковой передачи, а также вы можете получать данные из любого источника данных, поддерживаемого автозагрузчиком.
Пример: Пошаговая интеграция партии данных с помощью DLT
@dlt.table
def customers():
return (
spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.load("/databricks-datasets/retail-org/customers/")
)
Пример: Потоковая загрузка из Kafka с помощью DLT
@dlt.table
def kafka_raw():
return (
spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "<server:ip>")
.option("subscribe", "topic1")
.option("startingOffsets", "latest")
.load()
)
Расписания приема
Вы можете получать данные как в рамках одноразовой операции, по повторяющемуся графику, или на постоянной основе.
- В случае использования потоковой передачи практически в режиме реального времени используйте непрерывный режим.
- Для вариантов использования пакетного приема данных, выполните однократный прием или задайте повторяющееся расписание.
См. обработка задач и инициированный vs. непрерывный режим работы конвейера.
партнеры по интеграции данных
Многие сторонние средства поддерживают пакетную или потоковую загрузку в Databricks. Databricks проверяет различные сторонние интеграции, хотя шаги по настройке доступа к исходным системам и приему данных зависят от средства. Список проверенных средств см. в партнеров по приему. Некоторые технологические партнеры также представлены в Databricks Partner Connect, который предоставляет пользовательский интерфейс, упрощающий подключение сторонних средств к данным Lakehouse.
прием DIY
Databricks предоставляет общую платформу вычислений. В конечном итоге вы можете создать свои коннекторы для обработки данных с помощью любого языка программирования, поддерживаемого Databricks, например Python или Java. Вы также можете импортировать и использовать популярные библиотеки соединителей с открытым исходным кодом, такие как средство загрузки данных, Airbyte и Debezium.
альтернативные варианты приема
Databricks рекомендует использовать импорт данных для большинства сценариев использования, так как это решение масштабируется для обработки больших объемов данных, обеспечения низкой задержки при обработке запросов и соблюдения ограничений сторонних API. Импорт данных копирует данные из ваших исходных систем в Azure Databricks, что приводит к дублированию данных, которые могут со временем стать устаревшими. Если вы не хотите копировать данные, можно использовать следующие средства:
- Федерация Lakehouse позволяет выполнять запросы к внешним данным без перемещения ваших данных.
- Delta Sharing позволяет безопасно совместно использовать данные между платформами, облаками и регионами.
Однако если вы не хотите копировать данные, используйте Lakehouse Federation или Delta Sharing.
Когда использовать Delta Sharing
Выберите Delta Sharing для следующих сценариев:
- Ограничение дублирования данных
- Запрос самых свежих возможных данных
Когда следует использовать федерацию Lakehouse
Выберите федерацию Лейкхаус для следующих сценариев.
- Неформализованные отчеты или проверка концепта для конвейеров ETL
Рекомендации при выборе метода приема
Рассмотрение | Руководство |
---|---|
Источник данных | Если собственные соединители Lakeflow Connect существуют для источника данных, это будет самый простой способ приема данных. Для источников данных, не поддерживаемых Lakeflow Connect, извлеките данные из источника и используйте автозагрузчик для приема данных в Databricks. Для локальных файлов используйте пользовательский интерфейс Databricks для отправки данных. |
Задержка | Если вы хотите анализировать данные практически в реальном времени, используйте потоковую передачу для использования добавочной обработки. При потоковой передаче данные доступны для запроса сразу после поступления каждой записи. В противном случае используйте пакетную загрузку. |
Перемещение данных | Если вы не можете скопировать данные из исходных систем в Databricks, используйте Lakehouse Federation или Delta Sharing. |
Перенос данных в Delta Lake
Сведения о переносе существующих данных в Delta Lake см. в статье "Миграция данных в Delta Lake".
COPY INTO (устаревшая версия)
Команда CREATE STREAMING TABLE
SQL является рекомендуемой альтернативой устаревшей команде COPY INTO
SQL для добавочного приема из облачного хранилища объектов. См. COPY INTO. Для более масштабируемого и надежного приема файлов Databricks рекомендует пользователям SQL использовать потоковые таблицы вместо COPY INTO
.
Дополнительные ресурсы
Что такое разница между приемом потоковой и добавочной пакетной передачи?