Introducción a la exportación de datos continua
En este artículo se describe la exportación continua de datos de Kusto a una tabla externa con una consulta de ejecución periódica. Los resultados se almacenan en la tabla externa, que define el destino, como Azure Blob Storage y el esquema de los datos exportados. Este proceso garantiza que todos los registros se exporten "exactamente una vez", con algunas excepciones.
Para habilitar la exportación continua de datos, cree una tabla externa y , a continuación, cree una definición de exportación continua que apunte a la tabla externa.
Nota:
Todos los comandos de exportación continua requieren permisos de administrador de base de datos.
Directrices de exportación continua
- Esquema de salida:
- El esquema de salida de la consulta de exportación debe coincidir con el esquema de la tabla externa a la que se exporta.
- Frecuencia:
- La exportación continua se ejecuta según el período de tiempo configurado para ella en la
intervalBetweenRunspropiedad . El valor recomendado para este intervalo es de al menos varios minutos, dependiendo de las latencias que esté dispuesto a aceptar. El intervalo de tiempo puede ser tan bajo como un minuto, si la tasa de ingesta es alta.
- La exportación continua se ejecuta según el período de tiempo configurado para ella en la
Nota:
solo intervalBetweenRuns sirve como recomendación y no se garantiza que sea preciso. La exportación continua no es adecuada para exportar agregaciones periódicas.
Por ejemplo, una intervalBetweenRuns=1h configuración de con una agregación por hora (T | summarize by bin(Timestamp, 1h)) no funcionará según lo previsto, ya que la exportación continua no se ejecutará exactamente a la hora. Por lo tanto, cada ubicación por hora recibirá varias entradas en los datos exportados.
- Número de archivos:
- El número de archivos exportados en cada iteración de exportación continua depende de cómo se particionar la tabla externa. Para obtener más información, vea exportar a un comando de tabla externa. Cada iteración de exportación continua siempre escribe en archivos nuevos y nunca se anexa a los existentes. Como resultado, el número de archivos exportados también depende de la frecuencia con la que se ejecuta la exportación continua. El parámetro frequency es
intervalBetweenRuns.
- El número de archivos exportados en cada iteración de exportación continua depende de cómo se particionar la tabla externa. Para obtener más información, vea exportar a un comando de tabla externa. Cada iteración de exportación continua siempre escribe en archivos nuevos y nunca se anexa a los existentes. Como resultado, el número de archivos exportados también depende de la frecuencia con la que se ejecuta la exportación continua. El parámetro frequency es
- Cuentas de almacenamiento de tablas externas:
- Para obtener el mejor rendimiento, Azure Data Explorer clúster y las cuentas de almacenamiento deben colocarse en la misma región de Azure.
- La exportación continua funciona de forma distribuida, de modo que todos los nodos del clúster se exportan simultáneamente. En clústeres grandes y si el volumen de datos exportado es grande, esto podría provocar una limitación del almacenamiento. Se recomienda configurar varias cuentas de almacenamiento para la tabla externa. Consulte errores de almacenamiento durante los comandos de exportación para obtener más detalles.
Exactamente una vez export
Para garantizar la exportación "exactamente una vez", la exportación continua usa cursores de base de datos. La consulta de exportación continua no debe incluir un filtro de marca de tiempo: el mecanismo de cursores de base de datos garantiza que los registros no se procese más de una vez. Agregar un filtro de marca de tiempo en la consulta puede provocar la falta de datos en los datos exportados.
La directiva IngestionTime debe estar habilitada en todas las tablas a las que se hace referencia en la consulta que se deben procesar "exactamente una vez" en la exportación. La directiva está habilitada de forma predeterminada en todas las tablas recién creadas.
La garantía para la exportación "exactamente una vez" es solo para los archivos notificados en el comando mostrar artefactos exportados. La exportación continua no garantiza que cada registro se escriba una sola vez en la tabla externa. Si se produce un error una vez iniciada la exportación y algunos de los artefactos ya se han escrito en la tabla externa, la tabla externa puede contener duplicados. Si se anuló una operación de escritura antes de la finalización, la tabla externa puede contener archivos dañados. En tales casos, los artefactos no se eliminan de la tabla externa, pero no se notifican en el comando mostrar artefactos exportados. El consumo de los archivos exportados mediante show exported artifacts command garantiza que no haya duplicaciones ni daños.
Exportación desde tablas de hechos y dimensiones
De forma predeterminada, se supone que todas las tablas a las que se hace referencia en la consulta de exportación son tablas de hechos. Por lo tanto, tienen como ámbito el cursor de base de datos. La sintaxis declara explícitamente qué tablas tienen ámbito (hechos) y cuáles no tienen ámbito (dimensión). Consulte el over parámetro en el comando create para obtener más información.
La consulta de exportación incluye solo los registros que se han unido desde la ejecución de exportación anterior. La consulta de exportación puede contener tablas de dimensiones en las que todos los registros de la tabla de dimensiones se incluyen en todas las consultas de exportación. Al usar combinaciones entre tablas de hechos y dimensiones en la exportación continua, tenga en cuenta que los registros de la tabla de hechos solo se procesan una vez. Si la exportación se ejecuta mientras faltan registros en las tablas de dimensiones para algunas claves, los registros de las claves respectivas se pierden o se incluyen valores NULL para las columnas de dimensión en los archivos exportados. La devolución de registros perdidos o nulos depende de si la consulta usa la combinación interna o externa. La forcedLatency propiedad de la definición de exportación continua puede ser útil en estos casos, donde las tablas de hechos y dimensiones se ingieren durante el mismo tiempo para los registros correspondientes.
Nota:
No se admite la exportación continua de solo tablas de dimensiones. La consulta de exportación debe incluir al menos una sola tabla de hechos.
Exportación de datos históricos
La exportación continua comienza a exportar datos solo desde el punto de su creación. Los registros ingeridos antes de esa hora se deben exportar por separado mediante el comando de exportación no continua.
Los datos históricos pueden ser demasiado grandes para exportarse en un único comando de exportación. Si es necesario, particionar la consulta en varios lotes más pequeños.
Para evitar duplicados con los datos exportados por exportación continua, use StartCursor devueltos por el comando show continuous export y export solo registra where cursor_before_or_at el valor del cursor. Por ejemplo:
.show continuous-export MyExport | project StartCursor
| StartCursor |
|---|
| 636751928823156645 |
Seguido de:
.export async to table ExternalBlob
<| T | where cursor_before_or_at("636751928823156645")
Supervisión de exportación continua
Supervise el estado de los trabajos de exportación continua mediante las siguientes métricas de exportación:
Continuous export max lateness- Retraso máximo (en minutos) de exportaciones continuas en el clúster. Este es el tiempo entre ahora y el mínimo deExportedTotodos los trabajos de exportación continua en el clúster. Para obtener más información, vea.show continuous exportcomando .Continuous export result- Resultado correcto o con error de cada ejecución de exportación continua. Esta métrica se puede dividir por el nombre de exportación continua.
Use el .show continuous export failures comando para ver los errores específicos de un trabajo de exportación continua.
Advertencia
Si se produce un error en una exportación continua durante más de 7 días debido a un error permanente, el sistema deshabilitará automáticamente la exportación.
Entre los errores permanentes se incluyen: no se encuentra la tabla externa, la discrepancia entre el esquema de la consulta de exportación continua y el esquema de tabla externa, la cuenta de almacenamiento no es accesible.
Una vez corregido el error, puede volver a habilitar la exportación continua mediante el .enable continuous export comando .
Consumo de recursos
- El impacto de la exportación continua en el clúster depende de la consulta que la exportación continua está ejecutando. La ejecución de la consulta consume la mayoría de los recursos, como la CPU y la memoria.
- El número de operaciones de exportación que se pueden ejecutar simultáneamente está limitado por la capacidad de exportación de datos del clúster. Para obtener más información, vea Control de la limitación de comandos. Si el clúster no tiene capacidad suficiente para controlar todas las exportaciones continuas, algunas empezarán a atrasarán.
- El comando show commands-and-queries se puede usar para calcular el consumo de recursos.
- Filtre por
| where ClientActivityId startswith "RunContinuousExports"para ver los comandos y las consultas asociados a la exportación continua.
- Filtre por
Limitaciones
- La exportación continua no funciona para los datos ingeridos mediante la ingesta de streaming.
- La exportación continua no se puede configurar en una tabla con una directiva de seguridad de nivel de fila ni en una tabla con una directiva de acceso a vistas restringidas.
- No se puede crear la exportación continua en bases de datos de seguidor, ya que las bases de datos de seguidor son de solo lectura y la exportación continua requiere operaciones de escritura.
- La exportación continua solo funcionará si los registros de la tabla de origen se ingieren directamente en la tabla (ya sea mediante uno de los métodos de ingesta, mediante una directiva de actualización o ingiere desde comandos de consulta. Si los registros se mueven a la tabla mediante extensiones .move o mediante la tabla .rename, es posible que la exportación continua no procese estos registros. Consulte las limitaciones descritas en la página Cursores de base de datos.
- La exportación continua no se admite para las tablas externas con
impersonateen sus cadenas de conexión. - La exportación continua no admite llamadas entre bases de datos y entre clústeres.
- La exportación continua no está diseñada para funcionar en vistas materializadas, ya que se puede actualizar una vista materializada, mientras que los datos exportados al almacenamiento siempre se anexan solo y nunca se actualizan.
- La exportación continua no está diseñada para datos de streaming de baja latencia fuera de Azure Data Explorer.
- De forma predeterminada, la exportación continua se ejecuta en un modo distribuido, donde todos los nodos se exportan simultáneamente, por lo que el número de artefactos depende del número de nodos del clúster.
- Si los artefactos usados por la exportación continua están pensados para desencadenar Event Grid notificaciones, consulte la sección problemas conocidos de la documentación Event Grid datos.