Использование LightIngest для приема данных в Azure Data Explorer
LightIngest — это программа командной строки для приема нерегламентированных данных в Azure Data Explorer. Служебная программа может извлекать исходные данные из локальной папки, контейнера хранилища BLOB-объектов Azure или контейнера Amazon S3.
LightIngest является наиболее полезным, если требуется принять большое количество данных, так как время приема не ограничивается. Это также полезно, если вы хотите позднее запрашивать записи в зависимости от времени их создания, а не времени их приема.
Пример автоматического создания команды LightIngest см . в журнале данных.
Примечание.
Максимальный размер принимаемого файла составляет 6 ГБ. Для приема мы советуем файлы размером от 100 МБ до 1 ГБ.
Необходимые компоненты
- LightIngest. Существует два способа получения LightIngest:
Скачайте двоичные файлы LightIngest для операционной системы. Распакуйте двоичные файлы после скачивания.
Установите LightIngest в качестве средства .NET. Этот метод требует установки пакета SDK для .NET версии 6.0 или более поздней версии на компьютере. Затем выполните следующую команду:
dotnet tool install -g Microsoft.Azure.Kusto.LightIngest
Запуск LightIngest
Чтобы запустить LightIngest, выполните следующую команду:
В командной строке введите
LightIngest
, затем соответствующий аргумент командной строки.Совет
Чтобы получить список поддерживаемых аргументов командной строки, введите
LightIngest /help
.Введите
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 для приема. Поэтому рекомендуется задать все три аргумента.