Интеграция Azure Data Explorer с Фабрикой данных Azure

Фабрика данных Azure (ADF) — это облачная служба интеграции данных, которая позволяет интегрировать разные хранилища данных и выполнять множество действий с данными. ADF позволяет создавать управляемые данными рабочие процессы для оркестрации и автоматизации перемещения и преобразования данных. Azure Data Explorer — это одно из поддерживаемых хранилищ данных в Фабрике данных Azure.

Действия Фабрики данных Azure для Azure Data Explorer

Для пользователей Azure Data Explorer доступны различные интеграции с Фабрикой данных Azure.

Действие копирования

Действие копирования Фабрики данных Azure используется для передачи данных между хранилищами данных. Azure Data Explorer поддерживается как источник, когда данные копируются из Azure Data Explorer в любое поддерживаемое хранилище данных, и как приемник, когда данные копируются из любого поддерживаемого хранилища данных в Azure Data Explorer. Дополнительные сведения см. в статье Копирование данных в Azure Data Explorer или из Azure Data Explorer с помощью Фабрики данных Azure. Подробный обзор см. в статье Загрузка данных из Фабрики данных Azure в Azure Data Explorer. Azure Data Explorer поддерживается Azure IR (среда выполнения интеграции), используемой при копировании данных в Azure, и локальной средой выполнения интеграции, используемой при копировании данных из/в хранилище данных, расположенное локально или в сети с управлением доступом, в виртуальной сети Microsoft Azure. Дополнительные сведения см. в разделе о том, какую локальную среду выполнения интеграции использовать.

Совет

При использовании действия копирования и создании компонента Связанная служба или Набор данных выберите хранилище данных Azure Data Explorer (Kusto) , а не старое хранилище данных Kusto.

Действие Lookup

Действие поиска используется для выполнения запросов в Azure Data Explorer. Результат запроса будет возвращен как результат действия поиска и может быть использован в следующем действии в конвейере, как описано в документации по поиску в ADF.

В дополнение к ограничению размера ответа в 5000 строк и 2 МБ действие также имеет ограничение времени ожидания запроса, равное 1 часу.

Действие команды

Действие команды позволяет выполнять команды управления в Azure Data Explorer. В отличие от запросов команды управления потенциально могут изменять данные или метаданные. Некоторые из команд управления предназначены для приема данных в Azure Data Explorer с помощью таких команд, как .ingest или .set-or-append или для копирования данных из Azure Data Explorer во внешние хранилища данных с помощью таких команд, как .export. Подробное описание действия команды см. в статье Использование действия команды Фабрики данных Azure для выполнения команд управления в Azure Data Explorer. Использование команды управления для копирования данных иногда может быть более быстрым и дешевым вариантом, чем использование действия копирования. Чтобы определить, когда использовать действие команды вместо действия копирования, см. раздел Выбор между действием копирования и действием команды при копировании данных.

Массовое копирование из шаблона базы данных

Массовое копирование из базы данных в Azure Data Explorer с использованием шаблона Фабрики данных Azure — это предопределенный конвейер Фабрики данных Azure. Шаблон используется для создания множества конвейеров для каждой базы данных или таблицы для более быстрого копирования данных.

Сопоставление потоков данных

Сопоставление потоков данных Фабрики данных Azure — это визуально разработанные преобразования данных, которые позволяют инженерам данных разрабатывать графическую логику преобразования данных без написания кода. Чтобы создать поток данных и принять данные в Azure Data Explorer, используйте следующий способ.

  1. Создайте поток данных для сопоставления.
  2. Экспортируйте данные в большой двоичный объект Azure.
  3. Определите компонент Сетка событий или Действие копирования ADF для приема данных в Azure Data Explorer.

Выбор между действием копирования и действием команды Azure Data Explorer при копировании данных

Этот раздел поможет вам выбрать правильное действие для выполнения копирования данных в соответствии с вашими требованиями.

Для копирования данных из/в Azure Data Explorer в Фабрике данных Azure доступны два варианта.

  • Действие копирования.
  • Действие команды Azure Data Explorer, которое выполняет одну из команд управления, передающих данные в Azure Data Explorer.

Копирование данных из Azure Data Explorer

Можно копировать данные из Azure Data Explorer с помощью действия копирования или команды .export. Команда .export выполняет запрос, а затем экспортирует результаты запроса.

В следующей таблице показано сравнение действия копирования и команды .export для копирования данных из Azure Data Explorer.

Действие копирования Команда .export
Описание потока ADF выполняет запрос в Kusto, обрабатывает результат и отправляет его в целевое хранилище данных.
(ADX > ADF > хранилище данных приемника)
ADF отправляет команду управления .export в Azure Data Explorer, где выполняется команда, и данные отправляются непосредственно в целевое хранилище данных.
(ADX > хранилище данных приемника)
Поддерживаемые целевые хранилища данных Широкий выбор поддерживаемых хранилищ данных ADLS версии 2, большой двоичный объект Azure, база данных SQL
Производительность Централизованное управление
  • Распределенный (по умолчанию), экспорт данных из нескольких узлов одновременно
  • Повышение эффективности и COGS (стоимости проданных товаров).
Ограничения сервера Ограничения запросов можно расширить/отключить. По умолчанию запросы ADF содержат следующее.
  • Предельный размер 500 000 записей или 64 МБ.
  • Ограничение времени: 10 минут.
  • Для noTruncation задано значение false.
По умолчанию расширяет или отключает ограничения запросов.
  • Ограничения размера отключены.
  • Время ожидания сервера увеличено до 1 часа.
  • MaxMemoryConsumptionPerIterator и MaxMemoryConsumptionPerQueryPerNode расширяются до максимума (5 ГБ, TotalPhysicalMemory/2).

Совет

Если местом назначения копирования является одно из хранилищ данных, поддерживаемых командой .export, и если ни одна из функций операции копирования не является критически важной в соответствии с вашими требованиями, выберите команду .export.

Копирование данных в Azure Data Explorer

Можно копировать данные в Azure Data Explorer с помощью операций копирования или команд приема, таких как прием из запроса (.set-or-append, .set-or-replace, .set, .replace) и прием из хранилища (.ingest).

В следующей таблице сравниваются действия копирования и команды приема для копирования данных в Azure Data Explorer.

Действие копирования Прием из запроса
.set-or-append / .set-or-replace / .set / .replace
Прием из хранилища
.ingest
Описание потока ADF получает данные из исходного хранилища данных, преобразует их в табличный формат и вносит необходимые изменения в схему сопоставления. Затем ADF отправляет данные в большие двоичные объекты Azure, разбивает их на части, а затем загружает большие двоичные объекты, чтобы принять их в таблицу Azure Data Explorer.
(Исходное хранилище данных > ADF > Большие двоичные объекты Azure > ADX)
Эти команды могут выполнять запрос или команду .show и принимать результаты запроса в таблицу (ADX > ADX). Эта команда принимает данные в таблицу, "вытягивая" данные из одного или нескольких артефактов облачного хранилища.
Поддерживаемые исходные хранилища данных множество вариантов ADLS 2-го поколения, большой двоичный объект Azure, SQL (с использованием подключаемого модуля sql_request()), Cosmos (с использованием подключаемого модуля cosmosdb_sql_request) и любое другое хранилище данных, которое предоставляет HTTP или API Python. Файловая система, хранилище больших двоичных объектов Azure, ADLS 1-го поколения, ADLS 2-го поколения
Производительность Данные для приема размещаются в очереди и управляются, что обеспечивает небольшие размеры данных для приема и высокую доступность за счет балансировки нагрузки, повторных попыток и обработки ошибок.
  • Эти команды не были предназначены для импорта больших объемов данных.
  • Работа осуществляется в соответствии с ожиданиями и дешевле. Но для производственных сценариев и когда скорость трафика и объемы данных велики, используйте действие копирования.
Ограничения сервера
  • Нет ограничений размера.
  • Максимальное время ожидания: 1 час на один принимаемый большой двоичный объект.
  • Существует только ограничение на размер части запроса, которое можно пропустить, указав noTruncation=true.
  • Максимальное время ожидания: 1 час.
  • Нет ограничений размера.
  • Максимальное время ожидания: 1 час.

Совет

  • При копировании данных из ADF в Azure Data Explorer используйте команды ingest from query.
  • Для больших наборов данных (> 1 ГБ) используйте действие копирования.

Необходимые разрешения

В следующей таблице перечислены необходимые разрешения для различных этапов интеграции с Фабрикой данных Azure.

Шаг Операция Минимальный уровень разрешений Примечания
Создание связанной службы Навигация по базам данных Читатель базы данных
Пользователь, вошедший в систему, использующий ADF, должен иметь разрешение на чтение метаданных базы данных.
Пользователь может указать имя базы данных вручную.
Проверить подключение монитор базы данных или таблица для приема
Субъект-служба должен быть авторизован для выполнения команд .show уровня базы данных или приема на уровне таблицы.
  • TestConnection проверяет подключение к кластеру, но не к базе данных. Эту возможность можно использовать, даже если база данных не существует.
  • Разрешения администратора таблиц недостаточно.
Создание набора данных Навигация по таблицам монитор базы данных
Пользователь, вошедший в систему, использующий ADF, должен иметь права на выполнение команд .show уровня базы данных.
Пользователь может указать имя таблицы вручную.
Создание набора данных или Действие копирования Просмотр данных Читатель базы данных
Субъект-служба должен иметь права на чтение метаданных базы данных.
Импорт схемы Читатель базы данных
Субъект-служба должен иметь права на чтение метаданных базы данных.
Когда Azure Data Explorer является источником копирования из таблицы в таблицу, ADF импортирует схему автоматически, даже если пользователь не импортировал схему в явном виде.
ADX как приемник Создание сопоставления столбцов по имени монитор базы данных
Субъект-служба должен иметь права на выполнение команд .show уровня базы данных.
  • Все обязательные операции будут работать с таблицей приема.
  • Некоторые необязательные операции могут завершаться ошибкой.
  • Создание сопоставления файлов CSV-файла в таблице
  • Удаление сопоставления
таблица приема или администратор базы данных
Субъект-служба должен иметь права на внесений изменений в таблицу.
Прием данных таблица приема или администратор базы данных
Субъект-служба должен иметь права на внесений изменений в таблицу.
ADX как источник Выполнение запроса Читатель базы данных
Субъект-служба должен иметь права на чтение метаданных базы данных.
Команда Kusto Соответствует уровню разрешений каждой команды.

Производительность

Если Azure Data Explorer является источником и используется действие поиска, копирования или команды, содержащее запрос, см. рекомендации по выполнению запросов для получения сведений о производительности и документацию по ADF для получения сведений о действии копирования.

В этом разделе рассматривается использование действия копирования, при выполнении которого Azure Data Explorer является приемником. Расчетная пропускная способность приемника Azure Data Explorer составляет 11–13 Мбит/с. В следующей таблице подробно описаны параметры, влияющие на производительность приемника Azure Data Explorer.

Параметр Примечания
Географическая близость компонентов Расположите все компоненты в одном регионе:
  • источник и хранилища данных приемника.
  • Среда выполнения интеграции ADF.
  • Кластер Azure Data Explorer.
Убедитесь, что хотя бы ваша среда выполнения интеграции находится в том же регионе, что и кластер Azure Data Explorer.
Число DIU 1 виртуальная машина на каждые 4 DIU, используемые Фабрикой данных Azure.
Увеличение числа DIU поможет только в том случае, если вашим источником является файловое хранилище, содержащее несколько файлов. Каждая виртуальная машина будет обрабатывать разные файлы параллельно. Следовательно, копирование одного большого файла будет иметь большую задержку, чем копирование нескольких файлов меньшего размера.
Количество и номер SKU кластера ADX Большое количество узлов Azure Data Explorer увеличит время обработки приема. Использование номеров SKU при разработке сильно ограничивает производительность
Parallelism Чтобы скопировать очень большой объем данных из базы данных, разделите данные, а затем используйте цикл ForEach, который копирует каждый раздел параллельно, или используйте массовое копирование из базы данных в шаблон Azure Data Explorer. Примечание. Настройка Параметры > Степень параллелизма в действии копирования не относится к Azure Data Explorer.
Сложность обработки данных Задержка зависит от формата исходного файла, сопоставления столбцов и сжатия.
Виртуальная машина, на которой запущена ваша среда выполнения интеграции
  • Для копии Azure нельзя изменить виртуальные машины Фабрики данных Azure и номера SKU компьютеров.
  • При использовании локальной копии Azure убедитесь, что виртуальная машина, на которой размещена ваша локальная среда выполнения интеграции, достаточно мощная.

Советы и типичные проблемы

Мониторинг хода выполнения действий

  • При выполнении мониторинга хода выполнения действия свойство Записанные данные может быть намного больше, чем свойство Считанные данные, поскольку объем считанных данных рассчитывается в соответствии с размером двоичного файла, а объем записанных данных рассчитывается в соответствии с размером в памяти после десериализации и распаковки данных.

  • При выполнении мониторинга ходом выполнения действия можно видеть, что данные записываются в приемник Azure Data Explorer. При запросе таблицы Azure Data Explore вы видите, что данные не получены. Это связано с тем, что копирование в Azure Data Explorer состоит из двух этапов.

    • На первом этапе считываются исходные данные, разбиваются на фрагменты по 900 МБ и каждый фрагмент загружается в большой двоичный объект Azure. Первый этап можно просмотреть в окне хода выполнения действия Фабрики данных Azure.
    • Второй этап начинается после загрузки всех данных в большие двоичные объекты Azure. Узлы подсистемы Azure Data Explorer загружают большие двоичные объекты и принимают данные в таблицу приемника. Затем данные отображаются в таблице Azure Data Explorer.

Сбой приема файлов CSV вследствие неправильного экранирования

Azure Data Explorer ожидает, что файлы CSV будут соответствовать RFC 4180. Ожидается следующее.

  • Поля, содержащие символы, требующие экранирования (например, " и новые строки), должны начинаться и заканчиваться символом " без пробелов. Все символы " внутри поля экранируются с использованием двойного символа " ( "" ). Например, "Hello, "World""" — это допустимый файл CSV с единственной записью, содержащей единственный столбец или поле с содержимым Hello, "World" .
  • Все записи в файле должны иметь одинаковое количество столбцов и полей.

Фабрика данных Azure допускает использование обратной косой черты (символ экранирования). Если создать файл CSV с обратной косой чертой с помощью Фабрики данных Azure, загрузка файла в Azure Data Explorer завершится ошибкой.

Пример

Следующие текстовые значения: Hello, "World"
ABC DEF
"ABC\D"EF
"ABC DEF

В правильном CSV-файле должны отображаться следующим образом: "Hello, ""World"""
"ABC DEF"
"""ABC DEF"
"""ABC\D""EF"

При использовании символа экранирования по умолчанию (обратная косая черта) следующий файл CSV не будет работать с Azure Data Explorer: "Hello, "World""
"ABC DEF"
""ABC DEF"
""ABC\D"EF"

Вложенные объекты JSON

При копировании файла JSON в Azure Data Explorer обратите внимание на следующее.

  • Массивы не поддерживаются.
  • Если структура JSON содержит типы данных объекта, Фабрика данных Azure преобразует в плоскую структуру дочерние элементы объекта и попытается сопоставить каждый дочерний элемент с другим столбцом в таблице Azure Data Explorer. Если требуется, чтобы весь элемент объекта был сопоставлен с одним столбцом в Azure Data Explorer, выполните следующее.
    • Выполните прием всей строки JSON в один динамический столбец в Azure Data Explorer.
    • Вручную отредактируйте определение конвейера с помощью редактора JSON Фабрики данных Azure. В разделе Сопоставления выполните следующее.
      • Удалите несколько сопоставлений, которые были созданы для каждого дочернего элемента, и добавьте одно сопоставление, которое сопоставляет тип вашего объекта со столбцом таблицы.
      • После закрывающей квадратной скобки добавьте запятую, а затем:
        "mapComplexValuesToString": true.

Укажите дополнительные свойства при копировании в Azure Data Explorer.

Примечание

Эта функция в настоящее время доступна при редактировании полезных данных JSON вручную.

Добавьте одну строку под разделом "sink" действия копирования следующим образом.

"sink": {
    "type": "AzureDataExplorerSink",
    "additionalProperties": "{\"tags\":\"[\\\"drop-by:account_FiscalYearID_2020\\\"]\"}"
},

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

static void Main(string[] args)
{
       Dictionary<string, string> additionalProperties = new Dictionary<string, string>();
       additionalProperties.Add("ignoreFirstRecord", "false");
       additionalProperties.Add("csvMappingReference", "Table1_mapping_1");
       IEnumerable<string> ingestIfNotExists = new List<string> { "Part0001" };
       additionalProperties.Add("ingestIfNotExists", JsonConvert.SerializeObject(ingestIfNotExists));
       IEnumerable<string> tags = new List<string> { "ingest-by:Part0001", "ingest-by:IngestedByTest" };
       additionalProperties.Add("tags", JsonConvert.SerializeObject(tags));
       var additionalPropertiesForPayload = JsonConvert.SerializeObject(additionalProperties);
       Console.WriteLine(additionalPropertiesForPayload);
       Console.ReadLine();
}

Напечатанное значение:

{"ignoreFirstRecord":"false","csvMappingReference":"Table1_mapping_1","ingestIfNotExists":"[\"Part0001\"]","tags":"[\"ingest-by:Part0001\",\"ingest-by:IngestedByTest\"]"}

Дальнейшие действия