Uso de LightIngest para la ingesta de datos en Azure Data Explorer
LightIngest es una utilidad de línea de comandos para la ingesta de datos ad-hoc en Azure Data Explorer. La utilidad puede extraer datos de origen de una carpeta local o de un contenedor de almacenamiento de blobs de Azure. LightIngest resulta más útil cuando desea ingerir una gran cantidad de datos, ya que no hay ninguna restricción de tiempo en la duración de la ingesta. También resulta útil si desea consultar posteriormente registros según la hora a la que se crearon y no según la hora a la que se ingirieron.
Para generar automáticamente un comando LightIngest, consulte Uso del asistente para la ingesta única de datos históricos con LightIngest.
Prerrequisitos
LightIngest: descárguelo como parte del paquete NuGet Microsoft.Azure.Kusto.Tools
WinRAR: descárguelo de www.win-rar.com/download.html
Instalación de LightIngest
- Vaya a la ubicación del equipo en donde descargó LightIngest.
- Con WinRAR, extraiga el directorio tools en el equipo.
Ejecución de LightIngest
Vaya al directorio tools que ha extraído en el equipo.
En la barra de ubicación elimine la información de ubicación existente.
Escriba
cmdy presionecmd.En el símbolo del sistema, escriba
LightIngest.exeseguido del argumento de línea de comandos apropiado.Sugerencia
Para obtener una lista de los argumentos de línea de comandos admitidos, escriba
LightIngest.exe /help.
Escriba
ingest-seguido de la cadena de conexión al clúster de Azure Data Explorer que administrará la ingesta. Ponga la cadena de conexión entre comillas dobles y siga la especificación de las cadenas de conexión de Kusto.Por ejemplo:
ingest-{Cluster name and region}.kusto.windows.net;AAD Federated Security=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
Recomendaciones
El método recomendado permite que LightIngest funcione con el punto de conexión de ingesta en
https://ingest-{yourClusterNameAndRegion}.kusto.windows.net. De esta manera, el servicio Azure Data Explorer puede administrar la carga de ingesta, y usted puede recuperarse fácilmente de los errores transitorios. De todas formas, también puede configurar LightIngest para que trabaje directamente con el punto de conexión del motor (https://{yourClusterNameAndRegion}.kusto.windows.net).Nota
Si va a realizar la ingesta directamente con el punto de conexión del motor, no es necesario que incluya
ingest-. No obstante, no habrá una característica DM para proteger el motor y mejorar la tasa de éxito de la ingesta.Para obtener un rendimiento óptimo en la ingesta, se necesita conocer el tamaño de los datos sin procesar, por lo que LightIngest puede calcular el tamaño sin comprimir de los archivos locales. De todos modos es posible que LightIngest no pueda calcular correctamente el tamaño sin procesar de los blobs comprimidos sin descargarlos primero. Por lo tanto, cuando realice la ingesta de blobs comprimidos, establezca la propiedad
rawSizeBytesde los metadatos de blob en el tamaño de los datos sin comprimir en bytes.
Argumentos de la línea de comandos
| Nombre de argumento | Tipo | Descripción | Obligatorio/Opcional |
|---|---|---|---|
| string | Cadena de conexión de Azure Data Explorer que especifica el punto de conexión de Kusto que controlará la ingesta. Debe ir entre comillas dobles | Mandatory | |
| -database, -db | string | Nombre de la base de datos de Azure Data Explorer de destino. | Opcional |
| -table | string | Nombre de tabla de Azure Data Explorer de destino. | Mandatory |
| -sourcePath, -source | string | Ruta de acceso a los archivos de origen o URI raíz del contenedor de blobs. Si los datos están en blobs, tiene que contener una clave de cuenta de almacenamiento o una SAS. Se recomienda poner entre comillas dobles | Mandatory |
| -prefix | string | Cuando los datos de origen para la ingesta residen en un almacenamiento de blobs, todos los blobs comparten este prefijo de dirección URL, excepto el nombre del contenedor. Por ejemplo, si los datos están en MyContainer/Dir1/Dir2, el prefijo debe ser Dir1/Dir2. Se recomienda poner entre comillas dobles |
Opcional |
| -pattern | string | Patrón que se sigue para seleccionar los archivos o blobs de origen. Admite caracteres comodín. Por ejemplo, "*.csv". Se recomienda poner entre comillas dobles |
Opcional |
| -zipPattern | string | Expresión regular que se usa al seleccionar cuáles son los archivos de un archivo ZIP que se van a ingerir. Se omitirán los restantes archivos del archivo. Por ejemplo, "*.csv". Se recomienda ponerla entre comillas dobles. |
Opcional |
| -format, -f | string | Formato de datos de origen. Tiene que ser uno de los formatos admitidos | Opcional |
| -ingestionMappingPath, -mappingPath | string | Ruta de acceso al archivo local para la asignación de columnas de ingesta. Obligatorio para los formatos JSON y Avro. Consulte Asignaciones de datos | Opcional |
| -ingestionMappingRef, -mappingRef | string | Nombre de una asignación de columna de ingesta que se creó anteriormente en la tabla. Obligatorio para los formatos JSON y Avro. Consulte Asignaciones de datos | Opcional |
| -creationTimePattern | string | Cuando se establece, se usa para extraer la propiedad CreationTime de la ruta de acceso del archivo o del blob. Consulte Ingesta de datos mediante | Opcional |
| -ignoreFirstRow, -ignoreFirst | bool | Si está establecido, se omite el primer registro de cada archivo o blob (por ejemplo, si los datos de origen tienen encabezados). | Opcional |
| -tag | string | Etiquetas para asociar con los datos ingeridos. Se permiten repeticiones | Opcional |
| -dontWait | bool | Si se establece en "true", no espera a la finalización de la ingesta. Resulta útil cuando se realiza la ingesta de grandes cantidades de archivos o blobs | Opcional |
| -compression, -cr | double | Sugerencia de razón de compresión. Resulta útil cuando se realiza la ingesta de archivos o blobs comprimidos para ayudar a Azure Data Explorer a evaluar el tamaño de los datos sin procesar. Calculada como el tamaño original dividido por el tamaño comprimido | Opcional |
| -limit , -l | integer | Si se establece, limita la ingesta a los primeros N archivos. | Opcional |
| -listOnly, -list | bool | Si se establece, solo muestra los elementos que se hubieran seleccionado para la ingesta. | Opcional |
| -ingestTimeout | integer | Tiempo de expiración en minutos para la finalización de todas las operaciones de ingesta. De manera predeterminada, su valor es 60. |
Opcional |
| -forceSync | bool | Si se establece, fuerza la ingesta sincrónica. De manera predeterminada, su valor es false. |
Opcional |
| -dataBatchSize | integer | Establece el límite de tamaño total (MB, sin comprimir) de cada operación de ingesta. | Opcional |
| -filesInBatch | integer | Establece el límite de recuento de archivos o blobs de cada operación de ingesta. | Opcional |
| -devTracing, -trace | string | Si se establece, los registros de diagnóstico se escriben en un directorio local (de forma predeterminada, RollingLogs en el directorio actual, o se pueden modificar estableciendo el valor del modificador) |
Opcional |
Funcionalidades específicas de blobs de Azure
Cuando se usa con blobs de Azure, LightIngest usa ciertas propiedades de metadatos de blob para aumentar el proceso de ingesta.
| Propiedad de metadatos | Uso |
|---|---|
rawSizeBytes, kustoUncompressedSizeBytes |
Si se establece, se interpretará como el tamaño de los datos sin comprimir |
kustoCreationTime, kustoCreationTimeUtc |
Se interpreta como una marca de tiempo en formato UTC. Si se establece, se usará para invalidar la hora de creación en Kusto. Útil para escenarios de reposición |
Ejemplos de uso
Ingesta de datos mediante CreationTime
Cuando se cargan datos históricos de un sistema existente en Azure Data Explorer, todos los registros reciben la misma fecha de ingesta. Para habilitar la creación de particiones de los datos según la hora de creación y no según la hora de ingesta, puede usar el argumento -creationTimePattern. El argumento -creationTimePattern extrae la propiedad CreationTime de la ruta de acceso del archivo o del blob. No es necesario que el patrón refleje la ruta de acceso completa del elemento, basta con la sección que contiene la marca de tiempo que se quiere usar.
Entre los valores de argumento se debe incluir lo siguiente:
- Texto de constantes inmediatamente antes del formato de marca de tiempo, entre comillas simples (prefijo).
- El formato de marca de tiempo, en notación DateTime de .NET estándar.
- Texto de constantes que sigue inmediatamente a la marca de tiempo (sufijo).
Importante
Al especificar que se debe invalidar la hora de creación, asegúrese de que la propiedad Lookback de la Lookback vigente de la tabla de destino esté en línea con los valores de las rutas de acceso del archivo o del blob.
Ejemplos
Un nombre de blob que contiene la fecha y hora de la siguiente manera:
historicalvalues19840101.parquet(la marca de tiempo tiene cuatro dígitos para el año, dos dígitos para el mes y dos dígitos para el día del mes).El valor del argumento
-creationTimePatternforma parte del nombre de archivo:-creationTimePatterningest-{Cluster name and region}.kusto.windows.net;AAD Federated Security=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:truePara un identificador URI de blob que hace referencia a una estructura de carpetas jerárquica, como
https://storageaccount/container/folder/2002/12/01/blobname.extension,El valor del argumento
-creationTimePatternforma parte de la estructura de carpetas:-creationTimePatterningest-{Cluster name and region}.kusto.windows.net;AAD Federated Security=True -db:{Database} -table:Trips -source:"https://{Account}.blob.core.windows.net/{ROOT_CONTAINER};{StorageAccountKey}" -creationTimePattern:"'folder/'yyyy/MM/dd'/blob'" -pattern:"*.csv.gz" -format:csv -limit:2 -ignoreFirst:true -cr:10.0 -dontWait:true
Ingesta de blobs con una clave de cuenta de almacenamiento o un token de SAS
- Realice la ingesta de 10 blobs en la cuenta de almacenamiento especificada
ACCOUNT, en la carpetaDIR, dentro del contenedorCONT, y que coincidan con el patrón*.csv.gz - El destino es una base de datos
DB, tablaTABLEy la asignación de ingestaMAPPINGya se ha creado con anterioridad en el destino - La herramienta esperará hasta que se completen las operaciones de ingesta
- Tenga en cuenta las diferentes opciones para especificar la base de datos de destino y la clave de la cuenta de almacenamiento frente al Token de SAS
LightIngest.exe "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.exe "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
Ingesta de todos los blobs de un contenedor, sin incluir las filas de encabezado
- Realice la ingesta de todos los blobs de la cuenta de almacenamiento especificada
ACCOUNT, en la carpetaDIR1/DIR2, dentro del contenedorCONT, y que coincidan con el patrón*.csv.gz - El destino es la base de datos
DB, tablaTABLEy la asignación de ingestaMAPPINGya se ha creado con anterioridad en el destino - Los blobs de origen contienen una línea de encabezado, por lo que se indica a la herramienta que anule el primer registro de cada blob
- La herramienta publicará los datos de la ingesta y no esperará a que se completen las operaciones de esta
LightIngest.exe "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
Ingesta de todos los archivos JSON de una ruta de acceso
- Realice la ingesta de todos los archivos de la ruta de acceso
PATH, que coinciden con el patrón*.json - El destino es la base de datos
DB, tablaTABLEy la asignación de ingesta está definida en el archivo localMAPPING_FILE_PATH - La herramienta publicará los datos de la ingesta y no esperará a que se completen las operaciones de esta
LightIngest.exe "https://ingest-{ClusterAndRegion}.kusto.windows.net;Fed=True"
-database:DB
-table:TABLE
-source:"PATH"
-pattern:*.json
-format:json
-mappingPath:"MAPPING_FILE_PATH"
Ingesta de archivos y escritura de archivos de seguimiento de diagnóstico
- Realice la ingesta de todos los archivos de la ruta de acceso
PATH, que coinciden con el patrón*.json - El destino es la base de datos
DB, tablaTABLEy la asignación de ingesta está definida en el archivo localMAPPING_FILE_PATH - La herramienta publicará los datos de la ingesta y no esperará a que se completen las operaciones de esta
- Los archivos de seguimiento de diagnóstico se escribirán localmente en la carpeta
LOGS_PATH
LightIngest.exe "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"