Introducción a la ingesta de datos en Azure Data ExplorerAzure Data Explorer data ingestion overview

La ingesta de datos es el proceso que se usa para cargar los registros de datos de uno o varios orígenes para importar datos en una tabla en Azure Data Explorer.Data ingestion is the process used to load data records from one or more sources to import data into a table in Azure Data Explorer. Una vez ingeridos, los datos están disponibles para su consulta.Once ingested, the data becomes available for query.

El diagrama siguiente muestra el flujo de un extremo a otro para trabajar en Azure Data Explorer y muestra diferentes métodos de ingesta.The diagram below shows the end-to-end flow for working in Azure Data Explorer and shows different ingestion methods.

Introducción al esquema de administración e ingesta de datos

El servicio de administración de datos Azure Data Explorer, que es el responsable de la ingesta de datos, implementa el siguiente proceso:The Azure Data Explorer data management service, which is responsible for data ingestion, implements the following process:

Azure Data Explorer extrae los datos de un origen externo y lee las solicitudes de una cola de pendientes de Azure.Azure Data Explorer pulls data from an external source and reads requests from a pending Azure queue. Los datos se procesan por lotes o se transmiten a Data Manager.Data is batched or streamed to the Data Manager. El procesamiento por lotes de los datos que fluyen en la misma base de datos y tabla se optimiza para mejorar el rendimiento de la ingesta.Batch data flowing to the same database and table is optimized for ingestion throughput. Azure Data Explorer valida los datos iniciales y convierte los formatos de datos cuando es necesario.Azure Data Explorer validates initial data and converts data formats where necessary. Una posterior manipulación de los datos incluye hacer coincidir los esquemas, así como organizar, indexar, codificar y comprimir los datos.Further data manipulation includes matching schema, organizing, indexing, encoding, and compressing the data. Los datos se conservan en el almacenamiento de acuerdo con la directiva de retención establecida.Data is persisted in storage according to the set retention policy. A continuación, Data Manager confirma la ingesta de datos en el motor, donde están disponibles para su consulta.The Data Manager then commits the data ingest to the engine, where it's available for query.

Formatos de datos compatibles, propiedades y permisosSupported data formats, properties, and permissions

Ingesta de procesamiento por lotes frente a ingesta de streamingBatching vs streaming ingestion

  • La ingesta de procesamiento por lotes realiza el procesamiento por lotes de los datos y está optimizada para lograr un alto rendimiento de la ingesta.Batching ingestion does data batching and is optimized for high ingestion throughput. Este método es el tipo de ingesta preferido y de mayor rendimiento.This method is the preferred and most performant type of ingestion. Los datos se procesan por lotes en función de las propiedades de la ingesta.Data is batched according to ingestion properties. Después se combinan y optimizan pequeños lotes de datos para agilizar los resultados de la consulta.Small batches of data are then merged, and optimized for fast query results. La directiva de procesamiento por lotes de la ingesta se puede establecer en bases de datos o en tablas.The ingestion batching policy can be set on databases or tables. De forma predeterminada, el valor máximo del procesamiento por lotes es de 5 minutos, 1000 elementos o un tamaño total de 1 GB.By default, the maximum batching value is 5 minutes, 1000 items, or a total size of 1 GB.

  • Ingesta en streaming es la ingesta de datos en curso desde un origen de streaming.Streaming ingestion is ongoing data ingestion from a streaming source. La ingesta de streaming permite una latencia casi en tiempo real para pequeños conjuntos pequeños de datos por tabla.Streaming ingestion allows near real-time latency for small sets of data per table. En un principio, los datos se ingieren en el almacén de filas y posteriormente se mueven a las extensiones del almacén de columnas.Data is initially ingested to row store, then moved to column store extents. La ingesta en streaming se puede realizar mediante una biblioteca de cliente de Azure Data Explorer, o bien desde una de las canalizaciones de datos admitidas.Streaming ingestion can be done using an Azure Data Explorer client library or one of the supported data pipelines.

Métodos y herramientas de ingestaIngestion methods and tools

Azure Data Explorer admite varios métodos de ingesta, cada uno con sus propios escenarios de destino.Azure Data Explorer supports several ingestion methods, each with its own target scenarios. Estos métodos incluyen herramientas de ingesta, conectores y complementos para diversos servicios, canalizaciones administradas, ingesta mediante programación mediante distintos SDK y acceso directo a la ingesta.These methods include ingestion tools, connectors and plugins to diverse services, managed pipelines, programmatic ingestion using SDKs, and direct access to ingestion.

Ingesta mediante canalizaciones administradasIngestion using managed pipelines

Para aquellas organizaciones que deseen que sea un servicio externo el que realice la administración (límites, reintentos, supervisiones, alertas, etc.), es probable que un conector sea la solución más adecuada.For organizations who wish to have management (throttling, retries, monitors, alerts, and more) done by an external service, using a connector is likely the most appropriate solution. La ingesta en cola es apropiada para grandes volúmenes de datos.Queued ingestion is appropriate for large data volumes. Azure Data Explorer admite las siguientes instancias de Azure Pipelines:Azure Data Explorer supports the following Azure Pipelines:

Ingesta mediante conectores y complementosIngestion using connectors and plugins

Ingesta mediante programación mediante SDKProgrammatic ingestion using SDKs

Azure Data Explorer proporciona SDK que pueden usarse para la consulta e ingesta de datos.Azure Data Explorer provides SDKs that can be used for query and data ingestion. La ingesta mediante programación está optimizada para reducir los costos de ingesta (COG), minimizando las transacciones de almacenamiento durante y después del proceso de ingesta.Programmatic ingestion is optimized for reducing ingestion costs (COGs), by minimizing storage transactions during and following the ingestion process.

SDK y proyectos de código abierto disponiblesAvailable SDKs and open-source projects

HerramientasTools

  • Ingesta con un solo clic : Permite ingerir datos rápidamente mediante la creación y ajuste de tablas a partir de una amplia gama de tipos de origen.One click ingestion: Enables you to quickly ingest data by creating and adjusting tables from a wide range of source types. La ingesta con un solo clic sugiere tablas y estructuras de asignación automáticamente en función del origen de datos de Azure Data Explorer.One click ingestion automatically suggests tables and mapping structures based on the data source in Azure Data Explorer. La ingesta con un solo clic se puede usar para la ingesta puntual, o bien para definir una ingesta continua a través de Event Grid en el contenedor en el que se han ingerido los datos.One click ingestion can be used for one-time ingestion, or to define continuous ingestion via Event Grid on the container to which the data was ingested.

  • LightIngest : utilidad de línea de comandos para la ingesta de datos ad-hoc en Azure Data Explorer.LightIngest: A command-line utility for ad-hoc data ingestion into Azure Data Explorer. La utilidad puede extraer datos de origen de una carpeta local o de un contenedor de almacenamiento de blobs de Azure.The utility can pull source data from a local folder or from an Azure blob storage container.

Comandos de control de ingesta del lenguaje de consulta de KustoKusto Query Language ingest control commands

Hay varios métodos por los que los datos se pueden ingerir directamente al motor mediante los comandos del lenguaje de consulta de Kusto (KQL).There are a number of methods by which data can be ingested directly to the engine by Kusto Query Language (KQL) commands. Dado que este método omite los servicios de Administración de datos, solo es adecuado para la exploración y la creación de prototipos.Because this method bypasses the Data Management services, it's only appropriate for exploration and prototyping. No se debe usar en escenarios de producción o de gran volumen.Don't use this method in production or high-volume scenarios.

  • Ingesta insertada: se envía un comando de control .ingest inline al motor y los datos que se van a ingerir forman parte del propio texto del comando.Inline ingestion: A control command .ingest inline is sent to the engine, with the data to be ingested being a part of the command text itself. Este método está pensado para la realización de pruebas improvisadas.This method is intended for improvised testing purposes.

  • Ingesta desde consulta: se envía un comando de control .set, .append, .set-or-append o .set-or-replace al motor y los datos se especifican indirectamente como los resultados de una consulta o un comando.Ingest from query: A control command .set, .append, .set-or-append, or .set-or-replace is sent to the engine, with the data specified indirectly as the results of a query or a command.

  • Ingesta desde almacenamiento (extracción) : se envía un comando de control .ingest into al motor con los datos almacenados en algún almacenamiento externo (por ejemplo, Azure Blob Storage) al que el motor puede acceder y al que el comando señala.Ingest from storage (pull): A control command .ingest into is sent to the engine, with the data stored in some external storage (for example, Azure Blob Storage) accessible by the engine and pointed-to by the command.

Comparación de métodos y herramientas de ingestaComparing ingestion methods and tools

Nombre de ingestaIngestion name Tipo de datosData type Tamaño de archivo máximoMaximum file size Streaming, procesamiento por lotes, directoStreaming, batching, direct La mayoría de los escenarios comunesMost common scenarios ConsideracionesConsiderations
Ingesta con un solo clicOne click ingestion *sv, JSON*sv, JSON 1 GB sin comprimir (vea la nota)1 GB uncompressed (see note) Procesamiento por lotes en el contenedor, el archivo local y el blob en la ingesta directa.Batching to container, local file and blob in direct ingestion Un esquema de creación de tablas de un solo uso, definición de ingesta continua con Event Grid, ingesta en bloque con contenedor (hasta 10 000 blobs).One-off, create table schema, definition of continuous ingestion with event grid, bulk ingestion with container (up to 10,000 blobs) Se seleccionan aleatoriamente 10 000 del contenedor.10,000 blobs are randomly selected from container
LightIngestLightIngest Se admiten todos los formatosAll formats supported 1 GB sin comprimir (vea la nota)1 GB uncompressed (see note) Procesamiento por lotes a través del DM o de la ingesta directa al motor.Batching via DM or direct ingestion to engine Migración de datos, datos históricos con marcas de tiempo de ingesta ajustadas, ingesta en bloque (sin restricción de tamaño).Data migration, historical data with adjusted ingestion timestamps, bulk ingestion (no size restriction) Distingue mayúsculas de minúsculas, con distinción de espacio.Case-sensitive, space-sensitive
ADX KafkaADX Kafka
ADX a Apache SparkADX to Apache Spark
LogStashLogStash
Azure Data FactoryAzure Data Factory Formatos de datos compatiblesSupported data formats Ilimitado * (por restricciones de ADF)unlimited *(per ADF restrictions) Procesamiento por lotes o por desencadenador de Azure Data Factory.Batching or per ADF trigger Admite formatos que normalmente no se admiten, archivos grandes, puede copiar de más de 90 orígenes, desde permanentes hasta la nube.Supports formats that are usually unsupported, large files, can copy from over 90 sources, from on perm to cloud Hora de la ingestaTime of ingestion
Azure Data Flow Azure Data Flow Comandos de ingesta como parte del flujo.Ingestion commands as part of flow Debe tener un tiempo de respuesta de alto rendimiento.Must have high-performing response time
IoT HubIoT Hub Formatos de datos compatiblesSupported data formats N/DN/A Procesamiento por lotes, streamingBatching, streaming Mensajes de IoT, eventos de IoT, propiedades de IoTIoT messages, IoT events, IoT properties
Event HubEvent Hub Formatos de datos compatiblesSupported data formats N/DN/A Procesamiento por lotes, streamingBatching, streaming Mensajes, eventosMessages, events
Event GridEvent Grid Formatos de datos compatiblesSupported data formats 1  GB sin comprimir1 GB uncompressed Procesamiento por lotesBatching Ingesta continua desde Azure Storage, datos externos en Azure StorageContinuous ingestion from Azure storage, external data in Azure storage 100 KB es un tamaño de archivo óptimo, se usa tanto para cambiar el nombre de los blobs como para crearlos100 KB is optimal file size, Used for blob renaming and blob creation
.NET SDK.NET SDK Se admiten todos los formatosAll formats supported 1 GB sin comprimir (vea la nota)1 GB uncompressed (see note) Procesamiento por lotes, streaming, directoBatching, streaming, direct Escriba su propio código en función de las necesidades de la organización.Write your own code according to organizational needs
PythonPython Se admiten todos los formatosAll formats supported 1 GB sin comprimir (vea la nota)1 GB uncompressed (see note) Procesamiento por lotes, streaming, directoBatching, streaming, direct Escriba su propio código en función de las necesidades de la organización.Write your own code according to organizational needs
Node.jsNode.js Se admiten todos los formatosAll formats supported 1 GB sin comprimir (vea la nota)1 GB uncompressed (see note Procesamiento por lotes, streaming, directoBatching, streaming, direct Escriba su propio código en función de las necesidades de la organización.Write your own code according to organizational needs
JavaJava Se admiten todos los formatosAll formats supported 1 GB sin comprimir (vea la nota)1 GB uncompressed (see note) Procesamiento por lotes, streaming, directoBatching, streaming, direct Escriba su propio código en función de las necesidades de la organización.Write your own code according to organizational needs
RESTREST Se admiten todos los formatosAll formats supported 1 GB sin comprimir (vea la nota)1 GB uncompressed (see note) Procesamiento por lotes, streaming, directoBatching, streaming, direct Escriba su propio código en función de las necesidades de la organización.Write your own code according to organizational needs
GoGo Se admiten todos los formatosAll formats supported 1 GB sin comprimir (vea la nota)1 GB uncompressed (see note) Procesamiento por lotes, streaming, directoBatching, streaming, direct Escriba su propio código en función de las necesidades de la organización.Write your own code according to organizational needs

Nota

Cuando se hace referencia a ella en la tabla anterior, la ingesta admite un tamaño de archivo máximo de 4 GB.When referenced in the above table, ingestion supports a maximum file size of 4 GB. Se recomienda ingerir archivos de entre 100 MB y 1 GB.The recommendation is to ingest files between 100 MB and 1 GB.

Proceso de ingestaIngestion process

Una vez que haya elegido el método de ingesta que más se ajuste a sus necesidades, siga estos pasos:Once you have chosen the most suitable ingestion method for your needs, do the following steps:

  1. Establecimiento de una directiva de retenciónSet retention policy

    Los datos ingeridos en una tabla de Azure Data Explorer están sujetos a la directiva de retención vigente de la tabla.Data ingested into a table in Azure Data Explorer is subject to the table's effective retention policy. Salvo que la directiva de retención vigente se establezca explícitamente en una tabla, deriva de la directiva de retención de la base de datos.Unless set on a table explicitly, the effective retention policy is derived from the database's retention policy. La retención activa es una función del tamaño del clúster y de la directiva de retención.Hot retention is a function of cluster size and your retention policy. Si el espacio disponible es insuficiente para la cantidad de datos que se ingieren se obligará a realizar una retención esporádica de los primeros datos.Ingesting more data than you have available space will force the first in data to cold retention.

    Asegúrese de que la directiva de retención de la base de datos se ajusta a sus necesidades.Make sure that the database's retention policy is appropriate for your needs. Si no es así, anúlela explícitamente en el nivel de tabla.If not, explicitly override it at the table level. Para más información, consulte Directiva de retención.For more information, see retention policy.

  2. de una tablaCreate a table

    Para poder ingerir datos, es preciso crear una tabla con antelación.In order to ingest data, a table needs to be created beforehand. Use una de las siguientes opciones:Use one of the following options:

    Nota

    Si un registro está incompleto o un campo no se puede analizar como tipo el de datos necesarios, las columnas de tabla correspondientes se rellenará con valores nulos.If a record is incomplete or a field cannot be parsed as the required data type, the corresponding table columns will be populated with null values.

  3. Creación de la asignación de esquemasCreate schema mapping

    La asignación de esquemas ayuda a enlazar los campos de datos de origen a las columnas de la tabla de destino.Schema mapping helps bind source data fields to destination table columns. La asignación permite tomar datos de distintos orígenes en la misma tabla, en función de los atributos definidos.Mapping allows you to take data from different sources into the same table, based on the defined attributes. Se admiten diferentes tipos de asignaciones, tanto orientadas a filas (CSV, JSON y AVRO) como orientadas a columnas (Parquet).Different types of mappings are supported, both row-oriented (CSV, JSON and AVRO), and column-oriented (Parquet). En la mayoría de los métodos, las asignaciones también se pueden crear previamente en la tabla y hacer referencia a ellas desde el parámetro de comando de ingesta.In most methods, mappings can also be pre-created on the table and referenced from the ingest command parameter.

  4. Establecimiento de una directiva de actualización (opcional)Set update policy (optional)

    Algunas de las asignaciones de formato de datos (Parquet, JSON y Avro) admiten transformaciones sencillas y útiles en el momento de la ingesta.Some of the data format mappings (Parquet, JSON, and Avro) support simple and useful ingest-time transformations. Si el escenario requiere un procesamiento más complejo en el momento de la ingesta, use la directiva de actualización, lo que permite el procesamiento ligero mediante los comandos del lenguaje de consulta de Kusto.Where the scenario requires more complex processing at ingest time, use update policy, which allows for lightweight processing using Kusto Query Language commands. La directiva de actualización ejecuta automáticamente extracciones y transformaciones en los datos ingeridos en la tabla original e ingiere los datos resultantes en una o varias tablas de destino.The update policy automatically runs extractions and transformations on ingested data on the original table, and ingests the resulting data into one or more destination tables. Establezca la directiva de actualización.Set your update policy.

Pasos siguientesNext steps