Azure Stream Analytics: запись в таблицу Delta Lake
Delta Lake — это открытый формат, который обеспечивает надежность, качество и производительность озера данных. Azure Stream Analytics можно использовать для непосредственной записи потоковых данных в таблицы Delta Lake без написания одной строки кода.
Задание Stream Analytics можно настроить для записи с помощью собственного соединителя вывода Delta Lake либо в новую, либо в предварительно созданную таблицу Delta в учетной записи Azure Data Lake Storage 2-го поколения. Этот соединитель оптимизирован для приема высокоскоростных таблиц в разностных таблицах в режиме добавления. Он также предоставляет точно один раз семантику, которая гарантирует, что данные не будут потеряны или дублируются. Прием потоков данных в режиме реального времени из Центры событий Azure в разностные таблицы позволяет выполнять нерегламентную интерактивную или пакетную аналитику.
Конфигурация Delta Lake
Чтобы записать данные в Delta Lake, необходимо подключиться к учетной записи Data Lake Storage 2-го поколения. В следующей таблице перечислены свойства, связанные с конфигурацией Delta Lake.
Имя свойства | Description |
---|---|
Формат сериализации событий | Формат сериализации для выходных данных. Поддерживаются форматы JSON, CSV, Avro и Parquet. Delta Lake указан здесь как вариант. Данные отображаются в формате Parquet, если выбран Delta Lake. |
Имя разностного пути | Путь, используемый для записи таблицы Delta Lake в указанном контейнере. Он содержит имя таблицы. Дополнительные сведения см. в следующем разделе. |
Столбец секционирования | Необязательно. {field} Имя выходных данных в секционирование. Поддерживается только один столбец секции. Значение столбца string должно иметь тип. |
Полный список конфигурации Data Lake Storage 2-го поколения см. в Azure Data Lake Storage 2-го поколения обзоре.
Имя разностного пути
Имя разностного пути используется для указания расположения и имени таблицы Delta Lake, хранящейся в Data Lake Storage 2-го поколения.
Чтобы определить путь к таблице Delta и имени таблицы Delta, можно использовать один или несколько сегментов пути. Сегмент пути — это строка между последовательными символами разделителя (например, косой чертой /
), соответствующей имени виртуального каталога.
Имя сегмента является буквенно-цифровым и может включать пробелы, дефисы и символы подчеркивания. Последний сегмент пути используется в качестве имени таблицы.
Ограничения на имя разностного пути включают:
- Имена полей не учитывает регистр. Например, служба не может различать столбцы
ID
иid
. - Динамическое
{field}
имя не разрешено. Например,{ID}
обрабатывается как текст {ID}. - Число сегментов пути, составляющих имя, не может превышать 254.
Примеры
Примеры для имени разностного пути:
- Пример 1:
WestUS/CA/factory1/device-table
- Пример 2:
Test/demo
- Пример 3:
mytable
Выходные файлы примера:
- В выбранном контейнере путь к каталогу равен
WestEurope/CA/factory1
имени папки "Разностная таблица". - В выбранном контейнере путь к каталогу —
Test
это демонстрация имени папки "Разностная таблица". - В выбранном контейнере имя папки таблицы Delta является mytable.
Создать новую таблицу
Если таблица Delta Lake с тем же именем еще не существует и в расположении, заданном именем пути Delta, по умолчанию Stream Analytics создает новую таблицу Delta. Эта новая таблица создается со следующей конфигурацией:
- Запись версии 2.
- Читатель версии 1.
- Таблица доступна только для добавления.
- Схема таблицы создается с помощью схемы первой обнаруженной записи.
Запись в таблицу
Если таблица Delta Lake уже существует с тем же именем и в расположении, указанном именем разностного пути, по умолчанию Stream Analytics записывает новые записи в существующую таблицу.
Точно один раз доставка
Журнал транзакций позволяет Delta Lake гарантировать точно один раз обработки. Stream Analytics также обеспечивает точно однократную доставку при выводе данных в Data Lake Storage 2-го поколения во время выполнения одного задания.
Принудительное применение схем
Принудительное применение схемы означает, что все новые записи в таблицу должны быть совместимы со схемой целевой таблицы во время записи, чтобы обеспечить качество данных.
Все записи выходных данных проецируются в схему существующей таблицы. Если выходные данные записываются в новую таблицу Delta, схема таблицы создается с первой записью. Если входящие данные имеют один дополнительный столбец по сравнению с существующей схемой таблицы, он записывается в таблицу без дополнительного столбца. Если входящие данные отсутствуют в одном столбце по сравнению с существующей схемой таблицы, она записывается в таблицу со значением NULL.
Если между схемой таблицы Delta и схемой записи задания потоковой передачи нет пересечения, это считается экземпляром сбоя преобразования схемы. Это не единственный случай, который считается сбоем преобразования схемы.
При сбое преобразования схемы поведение задания следует политике обработки ошибок выходных данных, настроенной на уровне задания.
Контрольные точки разностного журнала
Задание Stream Analytics периодически создает контрольные точки журнала Delta в формате V1. Контрольные точки разностного журнала — это моментальные снимки таблицы Delta и обычно содержат имя файла данных, созданного заданием Stream Analytics. Если количество файлов данных большое, это приводит к большим контрольным точкам, что может привести к проблемам с памятью в задании Stream Analytics.
Ограничения
- Динамический ключ секции (указание имени столбца схемы записи в пути delta) не поддерживается.
- Несколько столбцов секционирования не поддерживаются. Если требуется несколько столбцов секционирования, рекомендуется использовать составной ключ в запросе, а затем указать его в качестве столбца секционирования.
- Составной ключ можно создать в запросе. Например,
"SELECT concat (col1, col2) AS compositeColumn INTO [blobOutput] FROM [input]"
.
- Составной ключ можно создать в запросе. Например,
- Запись в Delta Lake добавляется только.
- Проверка схемы в тестировании запросов недоступна.
- Небольшое сжатие файлов не выполняется Stream Analytics.
- Все файлы данных создаются без сжатия.
- Типы даты и десятичного разряда не поддерживаются.
- Запись в существующие таблицы записи версии 7 или выше с помощью функций записи завершается ошибкой.
- Пример. Сбой записи в существующие таблицы с включенными векторами удаления.
- Ниже перечислены исключения changeDataFeed и appendOnly Writer Features.
- Когда задание Stream Analytics записывает пакет данных в Delta Lake, оно может создавать несколько действий добавления файлов. Если для одного пакета создается слишком много действий добавления файлов, задание Stream Analytics может быть зависло.
- Количество создаваемых действий добавления файлов определяется многими факторами:
- Размер партии. Он определяется томом данных и параметрами пакетной обработки минимальных строк и максимальным временем.
- Кратность значений столбцов секционирования пакета.
- Чтобы уменьшить количество действий добавления файлов, созданных для пакета:
- Уменьшите конфигурации пакетной обработки минимальных строк и максимальное время.
- Уменьшите кратность значений столбцов секционирования путем настройки входных данных или выбора другого столбца секционирования.
- Количество создаваемых действий добавления файлов определяется многими факторами:
- Задания Stream Analytics могут читать и записывать только контрольные точки версии 1. Многопартийные контрольные точки и формат контрольной точки версии 2 не поддерживаются.