Solución de problemas de conexiones de entrada

En este artículo se describen los problemas comunes relacionados con las conexiones de entrada de Azure Stream Analytics, cómo solucionar esos problemas y cómo corregirlos.

En muchos pasos de solución de problemas es necesario habilitar los registros de recursos para el trabajo de Stream Analytics. Si los registros de recursos no están habilitados, vea Solución de problemas de Azure Stream Analytics mediante registros de recursos.

El trabajo no recibe eventos de entrada

  1. Compruebe la conectividad en las entradas y salidas. Use el botón Probar conexión para cada entrada y salida.

  2. Examine los datos de entrada:

    1. Use el botón Datos de ejemplo para cada entrada. Descargue los datos de ejemplo de entrada.

    2. Inspeccione los datos de ejemplo para entender el esquema y los tipos de datos.

    3. Compruebe Métricas de Azure Event Hubs para asegurarse de que los eventos se envían. Las métricas de mensajes deben ser mayores que cero si Event Hubs está recibiendo mensajes.

  3. Asegúrese de que ha seleccionado un intervalo de tiempo en la versión preliminar de la entrada. Elija Seleccionar intervalo de tiempo y, a continuación, escriba una duración de ejemplo antes de probar la consulta.

Importante

Para trabajos de Azure Stream Analytics que no se insertan en la red, no se base en la dirección IP de origen de las conexiones procedentes de Stream Analytics de ninguna manera. Pueden ser direcciones IP públicas o privadas, en función de las operaciones de infraestructura de servicio que se produzcan de vez en cuando.

Los eventos de entrada con formato incorrecto provocan errores de deserialización

Los problemas de deserialización se producen cuando el flujo de entrada del trabajo de Stream Analytics contiene mensajes con un formato incorrecto. Por ejemplo, que un mensaje tenga un formato incorrecto podría deberse a la falta de un paréntesis o una llave en un objeto JSON, o a un formato de marca de tiempo incorrecto en un campo de hora.

Cuando un trabajo de Stream Analytics recibe un mensaje con formato incorrecto desde una entrada, descarta el mensaje y le notifica con una advertencia. Se muestra un símbolo de advertencia en el icono Entradas del trabajo de Stream Analytics. El símbolo de advertencia persiste mientras el trabajo está en estado de ejecución.

Screenshot that shows the Inputs tile for Azure Stream Analytics.

Habilite los registros de recursos para ver los detalles del error y el mensaje (carga) que ha provocado el error. Hay varios motivos por los que se pueden producir errores de deserialización. Para más información sobre errores de deserialización específicos, vea Errores de los datos de entrada. Si los registros de recursos no están activados, aparece una breve notificación en Azure Portal.

Screenshot that shows a warning notification about input details.

Si la carga del mensaje es mayor que 32 KB o está en formato binario, ejecute el código CheckMalformedEvents.cs en el repositorio de ejemplos de GitHub. Este código lee el desplazamiento del identificador de la partición e imprime los datos ubicados en el desplazamiento.

Otras motivos comunes de los errores de deserialización de entrada son los siguientes:

  • Una columna de enteros que tiene un valor mayor que 9223372036854775807.
  • Cadenas en lugar de una matriz de objetos u objetos separados por líneas. Ejemplo válido: *[{'a':1}]*. Ejemplo no válido: *"'a' :1"*.
  • Se usa un blob de captura de Event Hubs en formato Avro como entrada en el trabajo.
  • Hay dos columnas en un único evento de entrada que solo difieren en el uso de mayúsculas y minúsculas. Ejemplo: *column1* y *COLUMN1*.

Cambios en el recuento de particiones

Se puede cambiar el recuento de particiones de centros de eventos. Si se cambia el recuento de particiones de un centro de eventos, debe detener y reiniciar el trabajo de Stream Analytics.

Los errores siguientes se muestran cuando se cambia el recuento de particiones de un centro de eventos mientras el trabajo está en ejecución: Microsoft.Streaming.Diagnostics.Exceptions.InputPartitioningChangedException.

El trabajo supera el máximo de receptores de Event Hubs

Un procedimiento recomendado para el uso de Event Hubs es usar varios grupos de consumidores para la escalabilidad del trabajo. El número de lectores en el trabajo de Stream Analytics para una entrada específica afecta a la cantidad de lectores en un grupo de consumidores único.

El número exacto de destinatarios se basa en los detalles de implementación interna para la lógica de la topología de escalado horizontal. El número no se expone externamente. El número de lectores puede cambiar cuando se inicia un trabajo o se actualiza.

Aparece el mensaje de error siguiente cuando el número de receptores supera el máximo. El mensaje incluye una lista de las conexiones existentes realizadas a Event Hubs en un grupo de consumidores. La etiqueta AzureStreamAnalytics indica que las conexiones se realizan desde servicio de streaming de Azure.

The streaming job failed: Stream Analytics job has validation errors: Job will exceed the maximum amount of Event Hubs Receivers.

The following information may be helpful in identifying the connected receivers: Exceeded the maximum number of allowed receivers per partition in a consumer group which is 5. List of connected receivers – 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1.

Nota:

Cuando el número de lectores cambia durante una actualización de trabajo, se escriben advertencias transitorias en registros de auditoría. Los trabajos de Stream Analytics se recuperan automáticamente de estos problemas transitorios.

Para agregar un nuevo grupo de consumidores a la instancia de Event Hubs, siga estos pasos:

  1. Inicie sesión en Azure Portal.

  2. Busque el centro de eventos.

  3. Seleccione Event Hubs en el título Entidades.

  4. Seleccione un centro de eventos según el nombre.

  5. En la página Instancia de Event Hubs, en el encabezado Entidades, seleccione Grupos de consumidores. Se muestra un grupo de consumidores con el nombre $Default.

  6. Seleccione + Grupo de consumidores para agregar un nuevo grupo de consumidores.

    Screenshot that shows the button for adding a consumer group in Event Hubs.

  7. Al crear la entrada en el trabajo de Stream Analytics para que apunte al centro de eventos, ha especificado ahí el grupo de consumidores. Event Hubs usa $Default si no se especifica ningún grupo de consumidores. Después de crear un grupo de consumidores, edite la entrada del centro de eventos en el trabajo de Stream Analytics y especifique el nombre del nuevo grupo de consumidores.

El número de lectores por partición supera el límite de Event Hubs

Si la sintaxis de la consulta de streaming hace referencia varias veces al mismo recurso de entrada del centro de eventos, el motor de trabajos puede utilizar varios lectores por cada consulta de ese mismo grupo de consumidores. Cuando hay demasiadas referencias al mismo grupo de consumidores, el trabajo puede superar el límite establecido de cinco y se produce un error. En esas circunstancias, puede dividir aún más si usa múltiples entradas en varios grupos de consumidores.

Los escenarios en los que el número de lectores por partición supera el límite de Event Hubs de cinco incluyen los siguientes:

  • Varias instrucciones SELECT: si usa varias instrucciones SELECT que hacen referencia a la misma entrada de centro de eventos, cada instrucción SELECT provoca que se cree un destinatario.

  • UNION: cuando se utiliza UNION, es posible tener varias entradas que hacen referencia al mismo centro de eventos y grupo de consumidores.

  • SELF JOIN: cuando se usa una operación SELF JOIN, es posible hacer referencia al mismo centro de eventos varias veces.

Las siguientes prácticas recomendadas pueden ayudar a reducir los escenarios en los que el número de lectores por partición supera el límite de Event Hubs de cinco.

División de la consulta en varios pasos mediante una cláusula WITH

La cláusula WITH especifica un conjunto de resultados con nombre temporal al que se puede hacer referencia mediante una cláusula FROM en la consulta. La cláusula WITH se define en el ámbito de ejecución de una única instrucción SELECT.

Por ejemplo, en lugar de esta consulta:

SELECT foo 
INTO output1
FROM inputEventHub

SELECT bar
INTO output2
FROM inputEventHub 
…

Utilice esta consulta:

WITH data AS (
   SELECT * FROM inputEventHub
)

SELECT foo
INTO output1
FROM data

SELECT bar
INTO output2
FROM data
…

Asegúrese de que las entradas se enlazan a grupos de consumidores diferentes

Para las consultas en las que hay conectadas tres o más entradas al mismo grupo de consumidores de Event Hubs, cree grupos de consumidores independientes. Para esta tarea es necesario crear entradas de Stream Analytics adicionales.

Creación de entradas independientes con diferentes grupos de consumidores

Puede crear entradas independientes con otros grupos de consumidores para el mismo centro de eventos. En la siguiente consulta UNION de ejemplo, InputOne e InputTwo hacen referencia al mismo origen de Event Hubs. Cualquier consulta puede tener entradas independientes con diferentes grupos de consumidores. La consulta UNION es solo un ejemplo.

WITH 
DataOne AS 
(
SELECT * FROM InputOne 
),

DataTwo AS 
(
SELECT * FROM InputTwo 
),

SELECT foo FROM DataOne
UNION 
SELECT foo FROM DataTwo

El número de lectores por partición supera el límite de IoT Hub

Los trabajos de Stream Analytics usan el punto de conexión compatible con Event Hubs integrado de Azure IoT Hub para conectarse y leer eventos de IoT Hub. Si el número de lectores por partición supera los límites de IoT Hub, puede usar las soluciones para Event Hubs para resolverlo. Puede crear un grupo de consumidores para el punto de conexión integrado mediante la sesión del punto de conexión del portal de IoT Hub, o bien desde el SDK de IoT Hub.

Obtener ayuda

Para obtener más ayuda, consulte la página de preguntas y respuestas de Microsoft sobre Azure Stream Analytics.

Pasos siguientes