Soluciona problemas de suscripciones a BigQuery

En esta página, se proporcionan algunas sugerencias comunes para solucionar problemas para suscripciones a BigQuery.

Verifica el estado de una suscripción a BigQuery

Para verificar el estado de una suscripción, sigue estos pasos:

  1. En la consola de Google Cloud, ve a Pub/Sub página de suscripción.

    Ir a Suscripciones

  2. Marca el ícono del Estado de tu suscripción a BigQuery.

    Si el ícono es una marca de verificación verde, la suscripción está en buen estado.

    Si el ícono tiene un signo de exclamación rojo, la suscripción tiene un estado de error.

  3. Haz clic en la suscripción a BigQuery.

    Se abrirá la página de detalles de la suscripción.

  4. Revisa el Estado de la suscripción para ver el mensaje de error.

  5. Según el mensaje de error, ve a la sección relevante de esta para solucionar el problema.

Después de que se resuelve el problema, la suscripción finalmente vuelve a que se encuentra en buen estado.

No se puede crear ni actualizar la suscripción

Estos son algunos de los problemas habituales que puedes encontrar si tienes dificultades crear o actualizar una suscripción a BigQuery.

Error de tabla no encontrada

Si la tabla que especificas en el flujo de trabajo para crear o actualizar suscripciones no existe, el flujo de trabajo muestra un error de tabla no encontrada. En la consola de Google Cloud, el mensaje es similar al siguiente:

The BigQuery table or dataset specified cannot be found.

Para resolver el problema, crea la tabla y asegúrate de poder consultar su estado antes de usarlos con una suscripción a BigQuery.

Error de falta de coincidencia de esquema

Si los esquemas de la tabla y el tema no son compatibles, entonces el flujo de trabajo para crear o actualizar suscripciones muestra un error de no coincidencia del esquema. En la consola de Google Cloud, el mensaje es similar al siguiente:

Incompatible schema type for field project_ids: expected INT64, got STRING

El mensaje de error especificado es para un esquema que no coincide en un campo llamado project_ids. Según el tipo de discrepancia del esquema que tengas, puedes verán una variación diferente del mensaje de error.

Para resolver el problema, verifica si las asignaciones de esquemas son compatibles.

Error de la cuenta de servicio

Si no configuraste la cuenta de servicio de Pub/Sub con el los permisos correctos, el flujo de trabajo para crear o actualizar suscripciones muestra un error. En la consola de Google Cloud, el mensaje es similar al siguiente:

Service account service-1234234234@gcp-sa-pubsub.iam.gserviceaccount.com
is missing permissions required to write to the BigQuery table:
bigquery.tables.get, bigquery.tables.updateData.

Para resolver el problema, comprueba si la cuenta de servicio tiene los permisos correctos

El estado de la suscripción muestra un signo de exclamación rojo

Si editas la tabla después de crear una suscripción, esto puede afectar cómo Pub/Sub escribe mensajes en la tabla. Si un cambio genera un problema, el campo de estado de la suscripción establecer en un estado de error.

En la página de detalles de la suscripción, verifica el estado del campo Subscription state. El campo Subscription state proporciona un error más específico, que puede ser uno de los siguientes:

  • table not found: La tabla se borró. Crear una tabla y verifica su estado. Consulta Obtén información de las tablas.

  • Permiso de tabla denegado: No. de la cuenta de servicio de Pub/Sub ya tenga permiso para escribir en la tabla. Verifica si la cuenta de servicio tiene los permisos correctos

  • Discrepancia en el esquema de la tabla: El esquema de la tabla ya no es compatible con el Configuración de suscripción a BigQuery. Verifica si el esquema las asignaciones son compatibles.

Mientras una suscripción a Pub/Sub se encuentra en estado de error mensajes no se escriben en la tabla de BigQuery y permanecen las tareas pendientes de la suscripción. Ten en cuenta que los mensajes no se entregan a una tema de mensajes no entregados adjunto, si se configuró. Se conservan los mensajes no confirmados para el período establecido en message_retention_duration(7 días, de forma predeterminada).

Se está acumulando una lista

Si ves que se acumulan mensajes pendientes en la suscripción o en los mensajes en el tema de mensajes no entregados de una suscripción, revisa los siguientes causas.

Mensaje de error INVALID_ARGUMENT

Este error ocurre cuando el mensaje proporcionado está en un formato que Pub/Sub considera válido, pero el esquema de la tabla de destino de BigQuery no lo es. Esto significa que uno o más campos del mensaje tienen valores que no son permitidos por el esquema de tablas de BigQuery. Revisa el la compatibilidad del esquema para verificar que los tipos y formatos de datos sean correctos. Algunos de los errores más comunes incluyen:

  • Una string vacía ("") no es un JSON válido. Cuando se envían datos a un valor nulo Columna de la tabla de BigQuery en JSON, proporciona un objeto JSON vacío ({}), null o una string JSON vacía ("\"\"") para representar valores faltantes. Enviando una cadena vacía genera un error.

  • Si el valor de un campo de mensaje excede la longitud máxima del campo de BigQuery, el mensaje falla debido a limitaciones de tamaño.

Para solucionar los errores de INVALID_ARGUMENT, agrega una tema de mensajes no entregados al suscripción de interés. El tema de mensajes no entregados captura los mensajes que no se pudieron enviar. escribirse en BigQuery, junto con un atributo llamado CloudPubSubDeadLetterSourceDeliveryErrorMessage que explique el motivo de la falla.

Estas fallas de entrega también se pueden ver en el Explorador de métricas. Selecciona la métrica pubsub.googleapis.com/subscription/push_request_count y filtrar por response_code=invalid_argument.

Mensaje de error RESOURCE_EXHAUSTED

Si los mensajes se escriben con lentitud en BigQuery, es posible que debas Aumentar la cuota de envío de Pub/Sub de tu proyecto o el almacenamiento de BigQuery de capacidad de procesamiento de escritura. Para verificar si tienes límites de cuota, examinar la métrica de solicitudes de envío (subscription/push_request_count) en busca de errores resource_exhausted.

Otra forma de diagnosticar problemas de cuota es verificar la cuota del proyecto. Navegación a IAM y Administrador > Cuotas dentro del proyecto que contiene tu Pub/Sub recurso o instancia de BigQuery. Busca la cuota relevante, pubsub.googleapis.com/regionalpushsubscriber o bigquerystorage.googleapis.com/write/append_bytes Si alguna de las cuotas necesita puedes solicitar una cuota más alta.

Tabla particionada por hora que muestra __UNPARTITIONED__ en la columna de ID de partición

Cuando una tabla de destino de BigQuery se particiona por hora, las filas primero terminan en una partición especial etiquetada como __UNPARTITIONED__ Vista INFORMATION_SCHEMA.PARTITIONS. Este es el comportamiento esperado en las tablas que usan la partición por tiempo de transferencia.

BigQuery utiliza un búfer de transmisión para optimizar el proceso de escritura. Los datos pueden residir en la partición __UNPARTITIONED__ hasta que haya suficiente volumen acumula o ha pasado al menos una hora. Una vez que se cumplan estas condiciones, BigQuery vuelve a particionar los datos en su partición por hora adecuada.

Puedes supervisar los datos dentro de la partición __UNPARTITIONED__ con el INFORMATION_SCHEMA.PARTITIONS vista.

¿Qué sigue?