Использование 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-объекта в качестве размера несжатых данных в байтах.
аргументов командной строки;
Аргумент | Тип | Описание | Обязательно |
---|---|---|---|
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 для удостоверения, назначаемого системой. | |
-ingestWithManagedIdentity, -imgestmi | string |
Идентификатор клиента управляемого удостоверения (назначаемого пользователем или системой), используемого для подключения. Используйте system для удостоверения, назначаемого системой. | |
-connectToStorageWithUserAuth, -storageUserAuth | string |
Проверка подлинности в службе хранилища источника данных с учетными данными пользователя. Для этого значения используются PROMPT параметры или DEVICE_CODE . |
|
-connectToStorageLoginUri, -storageLoginUri | string |
Если -connectToStorageWithUserAuth параметр задан, при необходимости можно указать Microsoft Entra ID URI входа. |
|
-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 , не ожидает завершения приема. Полезно при приеме больших объемов файлов или BLOB-объектов. |
|
-compression, -cr | double | Указание коэффициента сжатия. Полезно при приеме сжатых файлов и BLOB-объектов, чтобы помочь Azure Data Explorer оценить размер необработанных данных. Вычисляется как исходный размер, разделенный на сжатый размер. | |
-limit, -l | Целое число | Если этот параметр задан, ограничивает прием до первых N файлов. | |
-listOnly, -list | bool |
Если задано значение , отображает только те элементы, которые были выбраны для приема. | |
-ingestTimeout | Целое число | Время ожидания для выполнения всех операций приема (в минутах). По умолчанию — 60 . |
|
-forceSync | bool |
Если задано, инициирует синхронный прием данных. По умолчанию — false . |
|
-Интерактивная | bool |
Если задано значение false , не запрашивает подтверждение аргументов. Для автоматических потоков и неинтерактивных сред. По умолчанию — true . |
|
-dataBatchSize | Целое число | Задает общий размер (МБ, без сжатия) каждой операции приема. | |
-filesInBatch | Целое число | Задает ограничение количества файлов и 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"
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по