Salidas de Azure Stream Analytics
Un trabajo de Azure Stream Analytics consta de una entrada, una consulta y una salida. Hay varios tipos de salida a los que puede enviar datos transformados. En este artículo se enumeran las salidas de Stream Analytics admitidas. Al diseñar la consulta de Stream Analytics, haga referencia al nombre de la salida mediante la cláusula INTO. Puede usar una única salida por trabajo, o varias salidas por trabajo de streaming (si las necesita); para ello, agregue varias cláusulas INTO en la consulta.
Para crear, editar y probar las salidas de trabajos de Stream Analytics, puede usar Azure Portal, Azure PowerShell, la API de .NET, la API REST, Visual Studio y Visual Studio Code.
Nota:
Se recomienda encarecidamente usar herramientas de Stream Analytics para Visual Studio Code para obtener la mejor experiencia de desarrollo local. Existen lagunas conocidas en las herramientas de Stream Analytics para Visual Studio 2019 (versión 2.6.3000.0) y no se mejorarán en el futuro.
Algunos tipos de salidas son compatibles con particiones como se muestra en la tabla siguiente.
Todas las salidas son compatibles con el procesamiento por lotes, pero solo algunas permiten establecer explícitamente el tamaño del lote de salida. Para más información, consulte la sección Tamaño de los lotes de salida.
Tipo de salida | Creación de particiones | Seguridad |
---|---|---|
Azure Data Explorer | Sí | Identidad administrada |
Funciones de Azure | Sí | Clave de acceso |
Azure Synapse Analytics | Sí | Autenticación de usuario de SQL, Identidad administrada |
Blob Storage y Azure Data Lake Gen 2 | Sí | Clave de acceso, identidad administrada |
Azure Cosmos DB | Sí | Clave de acceso, identidad administrada |
Azure Data Lake Storage Gen 2 | Sí | Usuario de Microsoft Entra Identidad administrada |
Azure Event Hubs | Sí, es necesario establecer la columna de clave de partición en la configuración de salida. | Clave de acceso, identidad administrada |
Kafka (versión preliminar) | Sí, es necesario establecer la columna de clave de partición en la configuración de salida. | Clave de acceso, identidad administrada |
Azure Database para PostgreSQL | Sí | Autenticación de nombre de usuario y contraseña |
Power BI | No | Usuario de Microsoft Entra, Identidad administrada |
Colas de Azure Service Bus | Sí | Clave de acceso, identidad administrada |
Temas de Azure Service Bus | Sí | Clave de acceso, identidad administrada |
Azure SQL Database | Sí, opcional. | Autenticación de usuario de SQL, Identidad administrada |
Azure Table Storage | Sí | Clave de cuenta |
Importante
Azure Stream Analytics usa insertar o reemplazar la API por diseño. Esta operación reemplaza una entidad existente o inserta una nueva si no existe en la tabla.
Creación de particiones
Stream Analytics admite particiones para todas las salidas, excepto para Power BI. Para más información sobre las claves de partición y el número de escritores de salida, consulte el artículo sobre el tipo de salida específico que le interesa. Los artículos para los tipos de salida están vinculados en la sección anterior.
Además, para un ajuste de las particiones más avanzado, se puede controlar el número de escritores de salida mediante una cláusula INTO <partition count>
(consulte INTO) de la consulta, lo cual puede ser útil para lograr la topología de trabajo deseada. Si el adaptador de salida no tiene particiones, la falta de datos de una partición de entrada provocará un retraso hasta la cantidad de tiempo de llegada tardía. En tales casos, la salida se combina en un único sistema de escritura, lo que puede provocar cuellos de botella en la canalización. Para obtener más información sobre la directiva de llegadas tardías, consulte Puntos a tener en cuenta sobre el orden de eventos de Azure Stream Analytics.
Tamaño de lote de salida
Todas las salidas son compatibles con el procesamiento por lotes, pero solo algunas permiten establecer explícitamente el tamaño del lote. Azure Stream Analytics usa lotes de tamaño variable para procesar eventos y escribir en las salidas. Normalmente, el motor de Stream Analytics no escribe un mensaje a la vez y utiliza lotes para mejorar la eficacia. Cuando la velocidad de los eventos entrantes y salientes es alta, Stream Analytics utiliza lotes más grandes. Cuando la tasa de salida es baja, utiliza lotes más pequeños para mantener baja la latencia.
Comportamiento de la división de archivos Avro y Parquet
Una consulta de Stream Analytics puede generar varios esquemas para una salida determinada. La lista de columnas proyectadas y su tipo pueden cambiar de una fila a otra. Por su naturaleza, los formatos Avro y Parquet no admiten esquemas de variables en un solo archivo.
Al dirigir una secuencia con esquemas de variables a una salida mediante estos formatos, pueden producirse los siguientes comportamientos:
- Si se puede detectar el cambio de esquema, se cerrará el archivo de salida actual y se inicializará uno nuevo en el nuevo esquema. La división de archivos como tal ralentizará gravemente la salida cuando se produzcan cambios de esquema con frecuencia. Este comportamiento puede afectar gravemente al rendimiento general del trabajo.
- Si no se puede detectar el cambio de esquema, es probable que se rechace la fila y el trabajo se bloquee, ya que la fila no se puede generar. Las columnas anidadas, o matrices de varios tipos, son situaciones que no se detectarán y se rechazarán.
Se recomienda encarecidamente tener en cuenta que las salidas que usan el formato Avro o Parquet están fuertemente tipadas, o su esquema se crea durante la escritura, y que las consultas destinadas a ellas se escriban como tales (conversiones y proyecciones explícitas para un esquema uniforme).
Si es necesario generar varios esquemas, considere la posibilidad de crear varias salidas y dividir los registros en cada destino mediante una cláusula WHERE
.
Propiedades de la ventana de procesamiento por lotes con salida de Parquet
Cuando se usa la implementación con plantilla de Azure Resource Manager o la API de REST, las dos propiedades de la ventana de procesamiento por lotes son:
timeWindow
Tiempo de espera máximo por lote. El valor debe ser una cadena de
Timespan
. Por ejemplo,00:02:00
durante dos minutos. Después de este tiempo, el lote se escribe en la salida aunque no se cumpla el requisito de filas mínimas. El valor predeterminado es 1 minuto y el máximo permitido son 2 horas. Si la salida del blob tiene una frecuencia de patrón de ruta de acceso, el tiempo de espera no puede ser mayor que el intervalo de tiempo de la partición.sizeWindow
Número mínimo de filas por lote. En el caso de Parquet, cada lote crea un archivo. El valor predeterminado actual es 2000 filas y el máximo permitido es 10 000 filas.
Estas propiedades de ventana de procesamiento por lotes solo se admiten en la versión de API 2017-04-01-Preview o superior. A continuación se muestra un ejemplo de la carga de JSON para una llamada API de REST:
"type": "stream",
"serialization": {
"type": "Parquet",
"properties": {}
},
"timeWindow": "00:02:00",
"sizeWindow": "2000",
"datasource": {
"type": "Microsoft.Storage/Blob",
"properties": {
"storageAccounts" : [
{
"accountName": "{accountName}",
"accountKey": "{accountKey}",
}
],