En esta página, se proporcionan algunas sugerencias comunes para solucionar problemas relacionados con las suscripciones de BigQuery.
Verifica el estado de una suscripción a BigQuery
Para verificar el estado de una suscripción, sigue estos pasos:
En la consola de Google Cloud , ve a la página de suscripciones de Pub/Sub.
Verifica el ícono de 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 es un signo de exclamación rojo, la suscripción está en estado de error.
Haz clic en la suscripción a BigQuery.
Se abrirá la página de detalles de la suscripción.
Verifica el Estado de la suscripción para ver el mensaje de error.
Según el mensaje de error, ve a la sección pertinente de esta página para solucionar el problema.
Una vez que se resuelve el problema, la suscripción vuelve a un estado correcto.
No se pudo crear ni actualizar la suscripción
Estos son algunos de los problemas habituales que podrías tener si tienes dificultades para crear o actualizar una suscripción a BigQuery.
Error de tabla no encontrada
Si la tabla que especificas en el flujo de trabajo de suscripción de creación o actualización no existe, el flujo de trabajo devuelve un error de tabla no encontrada. En la Google Cloud consola, 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 verificar su estado antes de usarla con una suscripción de BigQuery.
Error de discrepancia de esquema
Si los esquemas de la tabla y el tema no son compatibles, el flujo de trabajo de creación o actualización de la suscripción devuelve un error de discrepancia de esquemas. En la Google Cloud consola, el mensaje es similar al siguiente:
Incompatible schema type for field project_ids: expected INT64, got STRING
El mensaje de error especificado es para la desigualdad del esquema de un campo llamado project_ids.
Según el tipo de discrepancia de esquema que tengas, es posible que veas una variación diferente del mensaje de error.
Para resolver el problema, verifica si las asignaciones de esquema son compatibles.
Error de la cuenta de servicio
Si no configuraste la cuenta de servicio de Pub/Sub con los permisos correctos, el flujo de trabajo de creación o actualización de la suscripción devolverá un error. En la Google Cloud consola, 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, verifica 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 la forma en que Pub/Sub escribe mensajes en la tabla. Si un cambio genera un problema, el campo de estado de la suscripción se establece 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: Se borró la tabla. Crear una tabla y verificar su estado Consulta Cómo obtener información de la tabla.
table permission denied: La cuenta de servicio de Pub/Sub ya no tiene permiso para escribir en la tabla. Verifica si la cuenta de servicio tiene los permisos correctos.
Incompatibilidad del esquema de la tabla: El esquema de la tabla ya no es compatible con la configuración de la suscripción a BigQuery. Comprueba si las asignaciones de esquema son compatibles.
Mientras una suscripción de Pub/Sub se encuentra en estado de error, los mensajes no se escriben en la tabla de BigQuery y permanecen en el backlog de la suscripción. Ten en cuenta que los mensajes no se entregan a un tema de mensajes no entregados adjunto, si se configuró. Los mensajes no confirmados se retienen durante el período establecido en message_retention_duration(7 d de forma predeterminada).
Se está acumulando un backlog
Si ves una acumulación de mensajes pendientes en la suscripción o mensajes que se dirigen al tema de mensajes no entregados de una suscripción, revisa las siguientes posibles causas.
Mensaje de error INVALID_ARGUMENT
Este error se produce cuando el mensaje proporcionado tiene un formato que Pub/Sub considera válido, pero el esquema de la tabla de destino de BigQuery no. Esto significa que uno o más campos del mensaje tienen valores que no son permitidos por el esquema de la tabla de BigQuery. Revisa la compatibilidad del esquema para verificar que los tipos y formatos de datos sean correctos. Estos son algunos de los errores más comunes:
Una cadena vacía (
"") no es un JSON válido. Cuando envíes datos a una columna de tabla de BigQuery JSON que admite valores nulos, proporciona un objeto JSON vacío({}),nullo una cadena JSON vacía("\"\"")para representar los valores faltantes. Si envías una cadena vacía, se producirá un error.Si el valor de un campo de mensaje supera la longitud máxima del campo de BigQuery, el mensaje falla debido a limitaciones de tamaño.
Para solucionar problemas relacionados con errores de INVALID_ARGUMENT, agrega un tema de mensajes no entregados a la suscripción de interés. El tema de mensajes no entregados captura los mensajes que no se pudieron escribir en BigQuery, junto con un atributo llamado CloudPubSubDeadLetterSourceDeliveryErrorMessage que explica el motivo del error.
Estos errores 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 filtra por response_code=invalid_argument.
Mensaje de error RESOURCE_EXHAUSTED
Si los mensajes se escriben en BigQuery con lentitud, es posible que debas aumentar la cuota de envío de Pub/Sub o la cuota de capacidad de procesamiento de escritura de almacenamiento de BigQuery de tu proyecto. Para verificar si tienes limitaciones de cuota, examina la métrica de solicitudes push (subscription/push_request_count) en busca de errores de resource_exhausted.
Otra forma de diagnosticar problemas de cuota es verificar la cuota del proyecto. Navega a IAM y administración > Cuotas en el proyecto que contiene tu recurso de Pub/Sub o instancia de BigQuery. Busca la cuota pertinente, ya sea pubsub.googleapis.com/regionalpushsubscriber o bigquerystorage.googleapis.com/write/append_bytes. Si alguna de las cuotas necesita un aumento, puedes solicitar un ajuste de cuota.
Tabla particionada por hora que muestra __UNPARTITIONED__ en la columna ID de partición
Cuando una tabla de destino de BigQuery se particiona por hora, las filas inicialmente se almacenan en una partición especial etiquetada como __UNPARTITIONED__ dentro de la vista INFORMATION_SCHEMA.PARTITIONS.
Este es el comportamiento esperado para las tablas que usan la partición por tiempo de transferencia.
BigQuery emplea un búfer de transmisión para optimizar el proceso de escritura.
Es posible que los datos residan en la partición __UNPARTITIONED__ hasta que se acumule el volumen suficiente o hasta que transcurra al menos una hora. Una vez que se cumplen estas condiciones, BigQuery vuelve a particionar los datos en su partición por hora correspondiente.
Puedes supervisar los datos dentro de la partición __UNPARTITIONED__ con la vista INFORMATION_SCHEMA.PARTITIONS.
¿Qué sigue?
- Si aún tienes problemas con tu suscripción a BigQuery, consulta Cómo obtener asistencia.