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 salida admiten la creación de particiones, y los tamaños de los lotes de salida varían para optimizar el rendimiento. En la siguiente tabla se muestran las características que se admiten para cada tipo de salida:
Tipo de salida | Creación de particiones | Seguridad |
---|---|---|
Azure Data Lake Storage Gen 1 | Sí | Usuario de Azure Active Directory , Identidad administrada |
Azure Data Explorer | Sí | Identidad administrada |
Azure Database para PostgreSQL | Sí | Autenticación de nombre de usuario y contraseña |
Azure SQL Database | Sí, opcional. | Autenticación de usuario de SQL, Identidad administrada |
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 Event Hubs | Sí, es necesario establecer la columna de clave de partición en la configuración de salida. | Clave de acceso, identidad administrada |
Power BI | No | Usuario de Azure Active Directory, Identidad administrada |
Azure Table Storage | Sí | Clave de cuenta |
Colas de Azure Service Bus | Sí | Clave de acceso, identidad administrada |
Temas de Azure Service Bus | Sí | Clave de acceso, identidad administrada |
Azure Cosmos DB | Sí | Clave de acceso, identidad administrada |
Funciones de Azure | Sí | Clave de acceso |
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. Todos los artículos de salidas 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 admiten el procesamiento por lotes, pero solo algunas admiten el ajuste de tamaño de los lotes. 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. Con la contrapresión, esto tendrá a su vez un impacto severo en el 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 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 intervalo de tiempo. Por ejemplo, "00:02:00" para 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. A continuación se muestra un ejemplo de la carga de JSON para una llamada API REST:
"type": "stream",
"serialization": {
"type": "Parquet",
"properties": {}
},
"timeWindow": "00:02:00",
"sizeWindow": "2000",
"datasource": {
"type": "Microsoft.Storage/Blob",
"properties": {
"storageAccounts" : [
{
"accountName": "{accountName}",
"accountKey": "{accountKey}",
}
],