Поделиться через


Использование LightIngest для приема данных в Azure Data Explorer

LightIngest — это программа командной строки для приема нерегламентированных данных в Azure Data Explorer. Служебная программа может извлекать исходные данные из локальной папки, контейнера хранилища BLOB-объектов Azure или контейнера Amazon S3.

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

Пример автоматического создания команды LightIngest см . в журнале данных.

Примечание.

Максимальный размер принимаемого файла составляет 6 ГБ. Для приема мы советуем файлы размером от 100 МБ до 1 ГБ.

Необходимые компоненты

Запуск LightIngest

Чтобы запустить LightIngest, выполните следующую команду:

  1. В командной строке введите LightIngest, затем соответствующий аргумент командной строки.

    Совет

    Чтобы получить список поддерживаемых аргументов командной строки, введите LightIngest /help.

  2. Введите ingest-, затем добавьте строку подключения к кластеру Azure Data Explorer, который будет управлять приемом. Заключите строку подключения в двойные кавычки и следуйте указаниям спецификации строк подключения Kusto.

    Например:

    LightIngest "https://ingest-{Cluster name and region}.kusto.windows.net;Fed=True" -db:{Database} -table:Trips -source:"https://{Account}.blob.core.windows.net/{ROOT_CONTAINER};{StorageAccountKey}" -pattern:"*.csv.gz" -format:csv -limit:2 -ignoreFirst:true -cr:10.0 -dontWait:true
    

Рекомендации по повышению производительности

  • Чтобы лучше управлять загрузкой приема и восстановлением после временных ошибок, используйте конечную точку приема в https://ingest-{yourClusterNameAndRegion}.kusto.windows.net.

  • Для оптимальной производительности приема необходим размер необработанных данных, поэтому LightIngest может оценить размер несжатых локальных файлов. Однако LightIngest может неправильно оценить исходный размер сжатых BLOB-объектов до их загрузки. Поэтому при приеме сжатых BLOB-объектов задайте свойство rawSizeBytesв метаданных BLOB-объекта в качестве размера несжатых данных в байтах.

Аргументы командной строки

Аргумент Type Описание Обязательное поле
string Строка подключения Kusto, указывающий конечную точку Kusto, которая обрабатывает прием. Это значение должно быть заключено в двойные кавычки. ✔️
-database, -db string Целевое имя базы данных Azure Data Explorer.
-table string Целевое имя таблицы Azure Data Explorer. ✔️
-sourcePath, -source string Расположение исходных данных, которые могут быть локальным путем к файлу, корневым URI контейнера BLOB-объектов Azure или URI контейнера Amazon S3. Если данные хранятся в БОЛЬШИХ двоичных объектах Azure, URI должен включать ключ учетной записи хранения или подписанный URL-адрес (SAS). Если данные входят в контейнер S3, универсальный код ресурса (URI) должен содержать ключ учетных данных. Рекомендуется заключить это значение в двойные кавычки. Дополнительные сведения см. в строка подключения хранилища. Pass -sourcePath:; Олицетворения для перечисления элементов хранилища Azure с разрешениями пользователя (авторизация запроса пользователя). ✔️
-managedIdentity, -mi string Идентификатор клиента управляемого удостоверения (назначаемого пользователем или назначаемого системой) для подключения. Используйте system для удостоверения, назначаемого системой.
-azCli bool Если задано, для проверки подлинности в службе Kusto используется Azure CLI. Azure CLI необходимо установить и войти в систему.
-ingestWithManagedIdentity, -ingestmi string Идентификатор клиента управляемого удостоверения (назначаемого пользователем или назначаемого системой) в службе Kusto для скачивания из хранилища. Используйте system для удостоверения, назначаемого системой.
-connectToStorageWithManagedIdentity, -storageMi string Идентификатор клиента управляемого удостоверения (назначаемого пользователем или назначаемого системой) на стороне клиента для перечисления из хранилища.
-connectToStorageWithUserAuth, -storageUserAuth string Проверка подлинности в службе хранилища источников данных с учетными данными пользователя. Параметры этого значения имеют PROMPT или DEVICE_CODE.
-connectToStorageLoginUri, -storageLoginUri string Если -connectToStorageWithUserAuth задано, вы можете указать URI для входа в систему Microsoft Entra ID.
-prefix string Если исходные данные для приема находятся в хранилище BLOB-объектов, этот префикс URL-адресов будет совместно использоваться всеми BLOB-объектами, за исключением имени контейнера.
Например, если данные находятся в MyContainer/Dir1/Dir2, префикс должен иметь значение Dir1/Dir2. Рекомендуется заключить это значение в двойные кавычки.
-pattern string Шаблон, по которому выбираются исходные файлы и BLOB-объекты. Поддерживает подстановочные знаки. Например, "*.csv". Рекомендуется заключить это значение в двойные кавычки.
-zipPattern string Регулярное выражение, используемое при выборе файлов в ZIP-архиве для приема. Все остальные файлы в архиве будут игнорироваться. Например, "*.csv". Рекомендуется заключить это значение в двойные кавычки.
-format, -f string Формат исходных данных. Необходимо использовать один из поддерживаемых форматов
-ingestionMappingPath, -mappingPath string Путь к локальному файлу для сопоставления столбцов приема. Дополнительные сведения см. в разделе о сопоставлении данных.
-ingestionMappingRef, -mappingRef string Имя сопоставления столбцов приема, которое ранее было создано в таблице. Дополнительные сведения см. в разделе о сопоставлении данных.
-creationTimePattern string Если задано, используется для извлечения свойства CreationTime из пути к файлу или BLOB-объекту. См. инструкции по приему данных с помощью CreationTime.
-ignoreFirstRow, -ignoreFirst bool Если задано, первая запись каждого файла или большого двоичного объекта игнорируется. Например, если исходные данные имеют заголовки.
-tag string Теги, связываемые с принятыми данными. Разрешено несколько вхождений
-dontWait bool Если задано значение true, не ожидает завершения приема. Полезно при приеме больших объемов файлов и больших двоичных объектов.
-compression, -cr двойной точности Указание коэффициента сжатия. Полезно при приеме сжатых файлов и BLOB-объектов, чтобы помочь Azure Data Explorer оценить размер необработанных данных. Вычисляется как исходный размер, разделенный сжатым размером.
-limit, -l integer Если задано, ограничивает прием до первых N-файлов .
-listOnly, -list bool Если задано, отображаются только элементы, которые были бы выбраны для приема.
-ingestTimeout integer Время ожидания для выполнения всех операций приема (в минутах). По умолчанию — 60.
-forceSync bool Если задано, инициирует синхронный прием данных. По умолчанию — false.
-интерактивный bool Если задано значение false, не запрашивает подтверждение аргументов. Для автоматических потоков и неинтерактивных сред. По умолчанию — true.
-dataBatchSize integer Задает общий размер (МБ, несжатый) каждой операции приема.
-filesInBatch integer Задает ограничение количества файлов или BLOB-объектов для каждой операции приема.
-devTracing, -trace string Если задано, журналы диагностики записываются в локальный каталог (по умолчанию RollingLogs в текущем каталоге или могут быть изменены, задав значение переключателя).

Возможности, связанные с BLOB-объектами Azure

При использовании с большими двоичными объектами Azure LightIngest использует определенные свойства метаданных BLOB-объектов для расширения процесса приема.

Свойство метаданных Использование
rawSizeBytes, kustoUncompressedSizeBytes Если задано, будет интерпретироваться как размер несжатых данных
kustoCreationTime, kustoCreationTimeUtc Интерпретируется как метка времени в формате UTC. Если задано, будет использоваться для переопределения времени создания в Kusto. Полезно для сценариев выполнения задним числом

Примеры использования

В следующих примерах предполагается, что вы установили двоичные файлы LightIngest для операционной системы. Если вы установили LightIngest в качестве средства .NET, замените LightIngest LightIngest его в примерах.

Прием исторических данных с помощью свойства CreationTime

При загрузке исторических данных из существующей системы в Azure Data Explorer все записи получают одну и ту же дату приема. Чтобы включить секционирование данных по времени создания, а не по времени приема, можно использовать аргумент -creationTimePattern. Аргумент -creationTimePattern извлекает свойство CreationTime из пути к файлу или BLOB-объекту. Шаблону не нужно отражать весь путь к элементу, достаточно указать раздел, в котором указана метка времени, которую необходимо использовать.

Значения аргумента должны включать:

  • Постоянный текст непосредственно перед форматом метки времени, заключенный в одинарные кавычки (префикс)
  • Формат метки времени в стандартной нотации .NET DateTime
  • Постоянный текст сразу после метки времени (суффикс).

Внимание

При указании того, что время создания должно быть переопределено, убедитесь, что свойство Lookback в политике объединения эффективных экстентов целевой таблицы соответствует значениям в путях к файлу или BLOB-объекту.

Примеры

  • Имя BLOB-объекта, содержащего дату и время: historicalvalues19840101.parquet (отметка времени содержит четыре цифры для обозначения года, две цифры для обозначения месяца и две цифры для обозначения дня),

    Значение аргумента -creationTimePattern является частью имени файла: "'historicalvalues'yyyyMMdd'.parquet'"

    LightIngest "https://ingest-{Cluster name and region}.kusto.windows.net;Fed=True" -db:{Database} -table:Trips -source:"https://{Account}.blob.core.windows.net/{ROOT_CONTAINER};{StorageAccountKey}" -creationTimePattern:"'historicalvalues'yyyyMMdd'.parquet'"
     -pattern:"*.parquet" -format:parquet -limit:2 -cr:10.0 -dontWait:true
    
  • Для URI BLOB-объекта, который ссылается на иерархическую структуру папок, например https://storageaccount/mycontainer/myfolder/2002/12/01/blobname.extension,

    Значение аргумента -creationTimePattern является частью структуры папок: "'folder/'yyyy/MM/dd'/blob'"

      LightIngest "https://ingest-{Cluster name and region}.kusto.windows.net;Fed=True" -db:{Database} -table:Trips -source:"https://{Account}.blob.core.windows.net/{ROOT_CONTAINER};{StorageAccountKey}" -creationTimePattern:"'mycontainer/myfolder/'yyyy/MM/dd'/'"
       -pattern:"*.csv.gz" -format:csv -limit:2 -ignoreFirst:true -cr:10.0 -dontWait:true
    

Прием BLOB-объектов с помощью ключа учетной записи хранения или маркера SAS

  • Прием 10 BLOB-объектов в указанной учетной записи хранения ACCOUNT: в папке DIR в контейнере CONT и в соответствии с шаблоном *.csv.gz
  • Назначением является база данных DB, таблица TABLE, а сопоставление приема MAPPING создано в месте назначения
  • Средство ожидает завершения операций приема
  • Обратите внимание на различные параметры для указания целевой базы данных и ключа учетной записи хранения или маркера SAS
LightIngest "https://ingest-{ClusterAndRegion}.kusto.windows.net;Fed=True"
  -database:DB
  -table:TABLE
  -source:"https://ACCOUNT.blob.core.windows.net/{ROOT_CONTAINER};{StorageAccountKey}"
  -prefix:"DIR"
  -pattern:*.csv.gz
  -format:csv
  -mappingRef:MAPPING
  -limit:10

LightIngest "https://ingest-{ClusterAndRegion}.kusto.windows.net;Fed=True;Initial Catalog=DB"
  -table:TABLE
  -source:"https://ACCOUNT.blob.core.windows.net/{ROOT_CONTAINER}?{SAS token}"
  -prefix:"DIR"
  -pattern:*.csv.gz
  -format:csv
  -mappingRef:MAPPING
  -limit:10

Прием всех BLOB-объектов в контейнере, кроме строк заголовков

  • Прием всех BLOB-объектов в указанной учетной записи хранения ACCOUNT: в папке DIR1/DIR2 в контейнере CONT и в соответствии с шаблоном *.csv.gz
  • Назначением является база данных DB, таблица TABLE, а сопоставление приема MAPPING создано в месте назначения
  • Исходные BLOB-объекты содержат строку заголовка, поэтому средство должно удалить первую запись каждого BLOB-объекта
  • Средство отправляет данные для приема и не ожидает завершения операций приема
LightIngest "https://ingest-{ClusterAndRegion}.kusto.windows.net;Fed=True"
  -database:DB
  -table:TABLE
  -source:"https://ACCOUNT.blob.core.windows.net/{ROOT_CONTAINER}?{SAS token}"
  -prefix:"DIR1/DIR2"
  -pattern:*.csv.gz
  -format:csv
  -mappingRef:MAPPING
  -ignoreFirstRow:true

Прием всех JSON-файлов из пути

  • Прием всех файлов по пути PATH, соответствующих шаблону *.json
  • Назначением является база данных DB, таблица TABLE, а сопоставление приема задано в локальном файле MAPPING_FILE_PATH
  • Средство отправляет данные для приема и не ожидает завершения операций приема
LightIngest "https://ingest-{ClusterAndRegion}.kusto.windows.net;Fed=True"
  -database:DB
  -table:TABLE
  -source:"PATH"
  -pattern:*.json
  -format:json
  -mappingPath:"MAPPING_FILE_PATH"

Прием файлов и запись диагностических файлов трассировки

  • Прием всех файлов по пути PATH, соответствующих шаблону *.json
  • Назначением является база данных DB, таблица TABLE, а сопоставление приема задано в локальном файле MAPPING_FILE_PATH
  • Средство отправляет данные для приема и не ожидает завершения операций приема
  • Файлы трассировки диагностики записываются локально в папке LOGS_PATH
LightIngest "https://ingest-{ClusterAndRegion}.kusto.windows.net;Fed=True"
  -database:DB
  -table:TABLE
  -source:"PATH"
  -pattern:*.json
  -format:json
  -mappingPath:"MAPPING_FILE_PATH"
  -trace:"LOGS_PATH"

Аутентификация на основе управляемых удостоверений

Существует три действия LightIngest, которые могут использовать управляемое удостоверение для проверки подлинности. Использование управляемого удостоверения на каждом шаге не требует использования управляемого удостоверения в других шагах. Для каждого действия предоставляется соответствующий аргумент командной строки.

  • Подключитесь к кластеру Kusto: чтобы очередь приема, средство использует строка подключения. Используйте аргумент "-mi", чтобы указать управляемое удостоверение, установленное на клиентской виртуальной машине с привилегиями приема в целевой базе данных.

  • Подключитесь к служба хранилища Azure, чтобы скачать большие двоичные объекты: используйте "-ingestmi", чтобы указать управляемое удостоверение, установленное в службе Kusto, которая имеет права чтения в контейнере хранилища.

  • Подключитесь к служба хранилища Azure для перечисления больших двоичных объектов контейнеров: используйте аргумент "-storageMi", чтобы указать управляемое удостоверение, установленное на клиентской виртуальной машине с правами списка в контейнере хранилища. Если вы используете этот метод, но не предыдущий (подключитесь к хранилищу Azure для скачивания больших двоичных объектов), управляемое удостоверение должно иметь права чтения, а также маркер будет передан службе Kusto для приема. Поэтому рекомендуется задать все три аргумента.