Solucionar problemas de cuotas y límites
BigQuery tiene varias cuotas y límites que limitan la frecuencia y el volumen de diferentes solicitudes y operaciones. Se utilizan para proteger la infraestructura y prevenir un uso inesperado por parte de los clientes. En este documento se explica cómo diagnosticar y mitigar errores específicos derivados de las cuotas y los límites.
Si el mensaje de error no aparece en este documento, consulta la lista de mensajes de error, que incluye información más genérica sobre los errores.
Información general
Si una operación de BigQuery falla porque se ha superado una cuota, la API devuelve el código de estado HTTP 403 Forbidden
. El cuerpo de la respuesta incluye más información sobre la cuota que se ha alcanzado. y tiene un aspecto similar a este:
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Quota exceeded: ...",
"reason" : "quotaExceeded"
} ],
"message" : "Quota exceeded: ..."
}
El campo message
de la carga útil indica cuál es el límite que se ha superado. Por ejemplo, la información del campo message
podría ser: Exceeded rate limits: too many table
update operations for this table
.
Por lo general, los límites de cuota se dividen en dos categorías. La categoría correspondiente se indica en el campo reason
de la carga útil de la respuesta.
rateLimitExceeded
. Este valor indica un límite a corto plazo. Para solucionar estos problemas de límites, vuelve a intentar la operación al cabo de unos segundos. Usa un tiempo de espera exponencial entre cada intento. Es decir, debes aumentar exponencialmente el tiempo que transcurre entre cada intento.quotaExceeded
. Este valor indica un límite a largo plazo. Si llegas a un límite de este tipo, tendrás que esperar 10 minutos como mínimo antes de volver a realizar la operación. Si lo alcanzas sistemáticamente, te recomendamos que analices tu carga de trabajo para determinar cómo puedes mitigar el problema. Entre otras medidas, puedes optimizar tu carga de trabajo o solicitar un aumento de cuota.
En caso de que recibas un error quotaExceeded
, revisa el mensaje para saber qué límite de cuota se ha superado. Luego, analiza tu carga de trabajo y comprueba si puedes tomar alguna medida para no llegar a la cuota.
En algunos casos, la cuota se puede aumentar. Para hacerlo, ponte en contacto con el equipo de Asistencia de BigQuery o con el equipo de Ventas Google Cloud , pero te recomendamos que primero pruebes las sugerencias de este documento.
Diagnóstico
Para diagnosticar problemas, haz lo siguiente:
Usa las vistas de
INFORMATION_SCHEMA
junto con el calificador de región para analizar el problema subyacente. Estas vistas contienen metadatos sobre tus recursos de BigQuery, incluidas las tareas, las reservas y las inserciones de transmisión.Por ejemplo, en la siguiente consulta, se usa la vista
INFORMATION_SCHEMA.JOBS
, en la que se enumeran todos los errores relacionados con la cuota que se han producido en el último día:SELECT job_id, creation_time, error_result FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY) AND error_result.reason IN ('rateLimitExceeded', 'quotaExceeded')
Sustituye
REGION_NAME
por la región del proyecto. Debe ir precedido deregion-
. Por ejemplo, para la multirregiónUS
, usaregion-us
.Consulta los errores en los registros de auditoría de Cloud.
Por ejemplo, mediante el Explorador de registros, se puede ver que la siguiente consulta devuelve errores con el valor
Quota exceeded
olimit
en la cadena del mensaje:resource.type = ("bigquery_project" OR "bigquery_dataset") protoPayload.status.code ="7" protoPayload.status.message: ("Quota exceeded" OR "limit")
En este ejemplo, el código de estado
7
indicaPERMISSION_DENIED
, que se corresponde con el código de estado HTTP403
.Para ver más ejemplos de consultas de registros de auditoría de Cloud, consulta Consultas de BigQuery.
Errores de límite de cola de consultas
Si un proyecto intenta poner en cola más consultas interactivas o por lotes de las que permite su límite de cola, es posible que se produzca este error.
Mensaje de error
Quota exceeded: Your project and region exceeded quota for max number of jobs that can be queued per project.
Resolución
Este límite no se puede aumentar. Para solucionar este error de cuota, sigue estos pasos:
Pausa la tarea. Si identificas un proceso o un flujo de procesamiento responsable de un aumento de las consultas, pausa ese proceso o flujo.
Usa tareas con prioridad por lotes. Puedes poner en cola más consultas por lotes que consultas interactivas.
Distribuir consultas. Organiza y distribuye la carga entre diferentes proyectos en función de la naturaleza de tus consultas y de las necesidades de tu empresa.
Distribuye los tiempos de ejecución. Distribuir la carga en un periodo más amplio. Si tu solución de informes necesita ejecutar muchas consultas, intenta introducir cierta aleatoriedad en el momento en que se inician las consultas. Por ejemplo, no inicies todos los informes al mismo tiempo.
Usa BigQuery BI Engine. Si has recibido este error al usar una herramienta de inteligencia empresarial (BI) para crear paneles que consultan datos en BigQuery, te recomendamos que uses BI Engine de BigQuery. Usar BigQuery BI Engine es la opción óptima para este caso práctico.
Optimiza las consultas y el modelo de datos. A menudo, una consulta se puede reescribir para que se ejecute de forma más eficiente. Por ejemplo, si tu consulta contiene una cláusula expresión de tabla común (CTE)–
WITH
, a la que se hace referencia en más de un lugar de la consulta, este cálculo se realiza varias veces. Es mejor conservar los cálculos realizados por la CTE en una tabla temporal y, a continuación, hacer referencia a ella en la consulta.Las combinaciones múltiples también pueden ser la causa de la falta de eficiencia. En este caso, puede que te interese usar columnas anidadas y repetidas. Si lo haces, a menudo se mejora la localidad de los datos, se elimina la necesidad de realizar algunas combinaciones y, en general, se reduce el consumo de recursos y el tiempo de ejecución de las consultas.
Al optimizar las consultas, estas son más baratas, por lo que, si usas los precios basados en la capacidad, puedes ejecutar más consultas con tus ranuras. Para obtener más información, consulta la introducción a la optimización del rendimiento de las consultas.
Optimizar el modelo de consulta. BigQuery no es una base de datos relacional. No está optimizada para un número infinito de consultas pequeñas. Si ejecutas un gran número de consultas pequeñas, tus cuotas se agotarán rápidamente. Estas consultas no se ejecutan con la misma eficiencia que con los productos de bases de datos más pequeños. BigQuery es un almacén de datos de gran tamaño y este es su caso de uso principal. Es la opción más adecuada para las consultas analíticas de grandes cantidades de datos.
Conservar datos (tablas guardadas). Preprocesa los datos en BigQuery y almacénalos en tablas adicionales. Por ejemplo, si ejecutas muchas consultas similares que requieren muchos recursos computacionales con diferentes
WHERE
condiciones, sus resultados no se almacenan en caché. Estas consultas también consumen recursos cada vez que se ejecutan. Puedes mejorar el rendimiento de estas consultas y reducir su tiempo de procesamiento precalculando los datos y almacenándolos en una tabla. Los datos precalculados de la tabla se pueden consultar medianteSELECT
consultas. A menudo, se puede hacer durante la ingestión en el proceso de ETL o mediante consultas programadas o vistas materializadas.Usa el modo de ejecución de prueba. Ejecuta consultas en modo de prueba, que estima el número de bytes leídos, pero no procesa la consulta.
Vista previa de los datos de la tabla. Para experimentar con los datos o explorarlos en lugar de ejecutar consultas, puedes obtener una vista previa de los datos de la tabla con la función de vista previa de tablas de BigQuery.
Utiliza los resultados de la consulta almacenados en caché. Todos los resultados de las consultas, tanto interactivas como por lotes, se almacenan en caché en tablas temporales durante aproximadamente 24 horas, con algunas excepciones. Aunque ejecutar una consulta almacenada en caché sigue contando para tu límite de consultas simultáneas, las consultas que usan resultados almacenados en caché son significativamente más rápidas que las que no lo hacen, ya que BigQuery no necesita calcular el conjunto de resultados.
Número de modificaciones de particiones en tablas con particiones por columnas
BigQuery devuelve este error cuando tu tabla particionada por columnas alcanza la cuota del número de modificaciones de partición permitidas por día. Las modificaciones de particiones incluyen el total de todas las tareas de carga, tareas de copia y tareas de consulta que añaden datos a una partición de destino o la sobrescriben.
Para ver el valor del límite Número de modificaciones de partición por tabla con particiones por columnas al día, consulta Tablas con particiones.
Mensaje de error
Quota exceeded: Your table exceeded quota for Number of partition modifications to a column partitioned table
Resolución
Esta cuota no se puede aumentar. Para solucionar este error de cuota, sigue estos pasos:
- Cambia el particionado de la tabla para que cada partición contenga más datos y, de esta forma, se reduzca el número total de particiones. Por ejemplo, puedes cambiar la partición de la tabla de diaria a mensual o modificar la forma en que se particiona la tabla.
- Usa el agrupamiento en clústeres en lugar de las particiones.
-
Si cargas datos con frecuencia desde varios archivos pequeños almacenados en Cloud Storage que usan una tarea por archivo, combina varias tareas de carga en una sola. Puedes cargar datos desde varios URIs de Cloud Storage con una lista separada por comas (por ejemplo,
gs://my_path/file_1,gs://my_path/file_2
) o mediante comodines (por ejemplo,gs://my_path/*
).Para obtener más información, consulta Cargar datos por lotes.
- Si usas tareas de carga, selección o copia para añadir filas de datos a una tabla, por ejemplo, te recomendamos que combines varias tareas en una sola. BigQuery no funciona bien cuando se usa como base de datos relacional. Te recomendamos que evites ejecutar acciones de anexión de una sola fila con frecuencia.
- Para añadir datos a un ritmo elevado, te recomendamos que uses la API Storage Write de BigQuery. Es una solución recomendada para la ingestión de datos de alto rendimiento. La API Storage Write de BigQuery tiene funciones sólidas, incluida la semántica de entrega "exactamente una vez". Para obtener información sobre los límites y las cuotas, consulta la API Storage Write. Para ver los costes de usar esta API, consulta los precios de la ingestión de datos de BigQuery.
-
Para monitorizar el número de particiones modificadas de una tabla, usa la
vista
INFORMATION_SCHEMA
.
Errores de cuota de inserción de transmisión
En esta sección se proporcionan consejos para solucionar errores de cuota asociados a la transmisión de datos a BigQuery.
En determinadas regiones, las inserciones de transmisión tienen una cuota más alta si no rellenas el campo insertId
de cada fila. Puedes consultar más información sobre las cuotas de las inserciones de transmisión aquí.
Los errores relacionados con la cuota de transmisión de BigQuery están determinados por la presencia o ausencia de insertId
.
Mensaje de error
Si el campo insertId
está vacío, es posible que se produzca el siguiente error de cuota:
Límite de cuota | Mensaje de error |
---|---|
Bytes por segundo y proyecto | La entidad con gaia_id GAIA_ID del proyecto PROJECT_ID en la región REGION ha superado la cuota de inserción de bytes por segundo. |
Si se rellena el campo insertId
, pueden producirse los siguientes errores de cuota:
Límite de cuota | Mensaje de error |
---|---|
Filas por segundo y proyecto | El proyecto PROJECT_ID en la región REGION ha superado la cuota de inserción de transmisión de filas por segundo. |
Filas por segundo y tabla | La tabla TABLE_ID ha superado la cuota de inserción de transmisión de filas por segundo. |
Bytes por segundo y tabla | La tabla TABLE_ID ha superado la cuota de inserción de transmisión de bytes por segundo. |
La función del campo insertId
es anular los duplicados de filas insertadas. Si llegan varias inserciones con el mismo insertId
en un periodo de pocos minutos, BigQuery escribe una sola versión del registro. Sin embargo, esta anulación automática de duplicados no está garantizada. Si quieres conseguir el máximo rendimiento de transmisión, te recomendamos que, en lugar de incluir insertId
, anules los duplicados manualmente.
Para obtener más información, consulta cómo asegurar la coherencia de los datos.
Cuando te encuentres con este error, diagnostica el problema y, a continuación, sigue los pasos recomendados para solucionarlo.
Diagnóstico
Usa las vistas STREAMING_TIMELINE_BY_*
para analizar el tráfico de transmisión. En estas vistas, se engloban las estadísticas de transmisión en intervalos de un minuto, agrupadas por código de error. Los errores de cuota aparecen en los resultados en los que error_code
es igual a RATE_LIMIT_EXCEEDED
o a QUOTA_EXCEEDED
.
Según el límite de cuota específico que se haya alcanzado, observa total_rows
o total_input_bytes
. Si el error se ha producido en una cuota a nivel de tabla, filtra por table_id
.
Por ejemplo, en la siguiente consulta se muestra el total de bytes ingeridos por minuto y la cantidad total de errores de cuota:
SELECT start_timestamp, error_code, SUM(total_input_bytes) as sum_input_bytes, SUM(IF(error_code IN ('QUOTA_EXCEEDED', 'RATE_LIMIT_EXCEEDED'), total_requests, 0)) AS quota_error FROM `region-REGION_NAME`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT WHERE start_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY) GROUP BY start_timestamp, error_code ORDER BY 1 DESC
Resolución
Para solucionar este error de cuota, sigue estos pasos:
Si usas el campo
insertId
para que se anulen los duplicados y el proyecto está en una región que admite una cuota de transmisión más alta, es recomendable que quites el campoinsertId
. Esta solución puede requerir algunos pasos adicionales para anular de forma manual los duplicados de datos. Para obtener más información, consulta cómo quitar duplicados manualmente.Si no usas el campo
insertId
o no es factible quitarlo, monitoriza el tráfico de transmisión durante 24 horas y analiza los errores de cuota:Si observas que, principalmente, se producen errores
RATE_LIMIT_EXCEEDED
en lugar deQUOTA_EXCEEDED
y el tráfico general es inferior al 80 % de la cuota, es probable que los errores se deban a que se han producido picos temporales. Para solucionarlos, vuelve a intentar la operación dejando un tiempo de espera exponencial entre cada intento.Si usas un trabajo de Dataflow para insertar datos, te recomendamos que utilices trabajos de carga en lugar de inserciones de streaming. Para obtener más información, consulta Configurar el método de inserción. Si usas Dataflow con un conector de E/S personalizado, te recomendamos que uses un conector de E/S integrado. Para obtener más información, consulta Patrones de entrada/salida personalizados.
Si se producen errores
QUOTA_EXCEEDED
o el tráfico general supera el 80% de la cuota, envía una solicitud para aumentarla. Para obtener más información, consulta Solicitar un ajuste de cuota.También puedes sustituir las inserciones de streaming por la nueva API Storage Write, que tiene un mayor rendimiento, un precio más bajo y muchas funciones útiles.
Errores de cuota al cargar archivos CSV
Si cargas un archivo CSV de gran tamaño con el comando bq load
y la --allow_quoted_newlines
marca,
es posible que se produzca este error.
Mensaje de error
Input CSV files are not splittable and at least one of the files is larger than
the maximum allowed size. Size is: ...
Resolución
Para solucionar este error de cuota, sigue estos pasos:
- Asigna el valor
false
a la marca--allow_quoted_newlines
. - Divide el archivo CSV en fragmentos más pequeños, cada uno de ellos con un tamaño inferior a 4 GB.
Para obtener más información sobre los límites que se aplican al cargar datos en BigQuery, consulta el artículo sobre las tareas de carga.
Errores de cuota de importaciones de tablas o de anexiones de consultas
BigQuery devuelve este mensaje de error cuando tu tabla alcanza el límite de operaciones de tabla al día para las tablas estándar. Las operaciones de tabla incluyen el total combinado de todas las tareas de carga, tareas de copia y tareas de consulta que añaden datos a una tabla de destino o la sobrescriben.
Para ver el valor del límite Operaciones de tabla al día, consulta Tablas estándar.
Mensaje de error
Your table exceeded quota for imports or query appends per table
Si te encuentras con este error, diagnostica el problema y, a continuación, sigue los pasos recomendados para solucionarlo.
Diagnóstico
Si no ha identificado la fuente de la que proceden la mayoría de las operaciones de la tabla, haga lo siguiente:
Anota el proyecto, el conjunto de datos y la tabla en los que se está escribiendo la consulta, la carga o la tarea de copia que ha fallado.
Usa
INFORMATION_SCHEMA.JOBS_BY_*
tablas para obtener más información sobre los trabajos que modifican la tabla.En el siguiente ejemplo se muestra el recuento por horas de los trabajos agrupados por tipo de trabajo de las últimas 24 horas mediante
JOBS_BY_PROJECT
. Si esperas que varios proyectos escriban en la tabla, sustituyeJOBS_BY_PROJECT
porJOBS_BY_ORGANIZATION
.SELECT TIMESTAMP_TRUNC(creation_time, HOUR), job_type, count(1) FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY) AND destination_table.project_id = "my-project-id" AND destination_table.dataset_id = "my_dataset" AND destination_table.table_id = "my_table" GROUP BY 1, 2 ORDER BY 1 DESC
Resolución
Esta cuota no se puede aumentar. Para solucionar este error de cuota, sigue estos pasos:
-
Si cargas datos con frecuencia desde varios archivos pequeños almacenados en Cloud Storage que usan una tarea por archivo, combina varias tareas de carga en una sola. Puedes cargar datos desde varios URIs de Cloud Storage con una lista separada por comas (por ejemplo,
gs://my_path/file_1,gs://my_path/file_2
) o mediante comodines (por ejemplo,gs://my_path/*
).Para obtener más información, consulta Cargar datos por lotes.
- Si usas tareas de carga, selección o copia para añadir filas de datos a una tabla, por ejemplo, te recomendamos que combines varias tareas en una sola. BigQuery no funciona bien cuando se usa como base de datos relacional. Te recomendamos que evites ejecutar acciones de anexión de una sola fila con frecuencia.
- Para añadir datos a un ritmo elevado, te recomendamos que uses la API Storage Write de BigQuery. Es una solución recomendada para la ingestión de datos de alto rendimiento. La API Storage Write de BigQuery tiene funciones sólidas, incluida la semántica de entrega "exactamente una vez". Para obtener información sobre los límites y las cuotas, consulta la API Storage Write. Para ver los costes de usar esta API, consulta los precios de la ingestión de datos de BigQuery.
-
Para monitorizar el número de particiones modificadas de una tabla, usa la
vista
INFORMATION_SCHEMA
.
Errores de límite de frecuencia máxima de operaciones de actualización de metadatos de una tabla
BigQuery devuelve este error cuando una tabla alcanza el límite de la frecuencia máxima de operaciones de actualización de metadatos de una tabla estándar.
Las operaciones con las tablas incluyen el total combinado de todas las tareas de carga, tareas de copia y tareas de consulta que añaden datos a tablas de destino o las sobrescriben, o bien que usan declaraciones DELETE
, INSERT
, MERGE
, TRUNCATE TABLE
o UPDATE
de DML para escribir datos en tablas.
Para ver el valor del límite Frecuencia máxima de operaciones de actualización de metadatos de cada tabla, consulta Tablas estándar.
Mensaje de error
Exceeded rate limits: too many table update operations for this table
Si te encuentras con este error, diagnostica el problema y, a continuación, sigue los pasos recomendados para solucionarlo.
Diagnóstico
Las actualizaciones de las tablas de metadatos pueden proceder de llamadas a la API que modifican los metadatos de una tabla o de trabajos que modifican el contenido de una tabla. Si no ha identificado la fuente de la que proceden la mayoría de las operaciones de actualización de los metadatos de una tabla, haga lo siguiente:
Identificar llamadas a la API
Ve al menú de Google Cloud navegación > Explorador de registros:
y selecciona RegistroFiltra los registros para ver las operaciones de la tabla ejecutando la siguiente consulta:
resource.type="bigquery_dataset" protoPayload.resourceName="projects/my-project-id/datasets/my_dataset/tables/my_table" (protoPayload.methodName="google.cloud.bigquery.v2.TableService.PatchTable" OR protoPayload.methodName="google.cloud.bigquery.v2.TableService.UpdateTable" OR protoPayload.methodName="google.cloud.bigquery.v2.TableService.InsertTable")
Identificar trabajos
La siguiente consulta devuelve una lista de trabajos que modifican la tabla afectada en el proyecto durante el último día. Si esperas que varios proyectos de una organización escriban en la tabla, sustituye JOBS_BY_PROJECT
por JOBS_BY_ORGANIZATION
.
SELECT job_id, user_email, query FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY) AND destination_table.project_id = "my-project-id" AND destination_table.dataset_id = "my_dataset" AND destination_table.table_id = "my_table"
Para obtener más información, consulta el resumen de los registros de auditoría de BigQuery.
Resolución
Esta cuota no se puede aumentar. Para solucionar este error de cuota, sigue estos pasos:
- Reduce la frecuencia de actualización de los metadatos de la tabla.
- Añade un retraso entre las tareas o las operaciones de tabla para asegurarte de que la frecuencia de actualización no supera el límite.
Para insertar o modificar datos, considera la posibilidad de usar operaciones de DML. Las operaciones de DML no se ven afectadas por el límite de frecuencia de frecuencia máxima de operaciones de actualización de metadatos de una tabla.
Las operaciones de DML tienen otros límites y cuotas. Para obtener más información, consulta el artículo sobre cómo usar el lenguaje de manipulación de datos (DML).
-
Si cargas datos con frecuencia desde varios archivos pequeños almacenados en Cloud Storage que usan una tarea por archivo, combina varias tareas de carga en una sola. Puedes cargar datos desde varios URIs de Cloud Storage con una lista separada por comas (por ejemplo,
gs://my_path/file_1,gs://my_path/file_2
) o mediante comodines (por ejemplo,gs://my_path/*
).Para obtener más información, consulta Cargar datos por lotes.
- Si usas tareas de carga, selección o copia para añadir filas de datos a una tabla, por ejemplo, te recomendamos que combines varias tareas en una sola. BigQuery no funciona bien cuando se usa como base de datos relacional. Te recomendamos que evites ejecutar acciones de anexión de una sola fila con frecuencia.
- Para añadir datos a un ritmo elevado, te recomendamos que uses la API Storage Write de BigQuery. Es una solución recomendada para la ingestión de datos de alto rendimiento. La API Storage Write de BigQuery tiene funciones sólidas, incluida la semántica de entrega "exactamente una vez". Para obtener información sobre los límites y las cuotas, consulta la API Storage Write. Para ver los costes de usar esta API, consulta los precios de la ingestión de datos de BigQuery.
-
Para monitorizar el número de particiones modificadas de una tabla, usa la
vista
INFORMATION_SCHEMA
.
Número máximo de errores de límite de solicitudes a la API
BigQuery devuelve este error cuando se alcanza el límite de frecuencia del número de solicitudes a una API de BigQuery por usuario y método. Por ejemplo, las llamadas al método tables.get
desde una cuenta de servicio o las llamadas al método jobs.insert
desde otra dirección de correo de usuario.
Para obtener más información, consulta el límite de frecuencia Número máximo de solicitudes de API por segundo, usuario y método en la API BigQuery.
Mensaje de error
Quota exceeded: Your user_method exceeded quota for concurrent api requests per user per method.
Si te encuentras con este error, diagnostica el problema y, a continuación, sigue los pasos recomendados para solucionarlo.
Diagnóstico
Si no has identificado el método que ha alcanzado este límite de frecuencia, haz lo siguiente:
Cuenta de servicio
Ve al proyecto que aloja la cuenta de servicio.
En la Google Cloud consola, ve al panel de control de APIs.
Para obtener instrucciones sobre cómo ver la información de uso detallada de una API, consulta Usar el panel de APIs.
En el panel de control de APIs, selecciona API de BigQuery.
Para ver información de uso más detallada, selecciona Métricas y, a continuación, haz lo siguiente:
En Seleccionar gráficos, elija Tráfico por método de API.
Filtra el gráfico por las credenciales de la cuenta de servicio. Es posible que veas picos en un método en el periodo en el que has detectado el error.
Para llamadas a la API
Algunas llamadas a la API registran errores en los registros de auditoría de BigQuery en Cloud Logging. Para identificar el método que ha alcanzado el límite, haz lo siguiente:
En la Google Cloud consola, ve al menú de Google Cloud navegación > Explorador de registros de tu proyecto:
y, a continuación, selecciona LoggingFiltra los registros ejecutando la siguiente consulta:
resource.type="bigquery_resource" protoPayload.authenticationInfo.principalEmail="<user email or service account>" "Too many API requests per user per method for this user_method" In the log entry, you can find the method name under the property protoPayload.method_name.
Para obtener más información, consulta el resumen de los registros de auditoría de BigQuery.
Resolución
Para solucionar este error de cuota, sigue estos pasos:
Reduce el número de solicitudes a la API o añade un retraso entre varias solicitudes a la API para que el número de solicitudes no supere este límite.
Si el límite solo se supera de vez en cuando, puedes implementar reintentos en este error específico con un tiempo de espera exponencial.
Si insertas datos con frecuencia, te recomendamos que uses inserciones de streaming, ya que no se ven afectadas por la cuota de la API de BigQuery. Sin embargo, la API de inserciones de streaming tiene costes asociados y su propio conjunto de límites y cuotas.
Para obtener información sobre el coste de las inserciones de transmisión, consulta los precios de BigQuery.
Al cargar datos en BigQuery mediante Dataflow con el conector de E/S de BigQuery, es posible que se produzca este error en el método
tables.get
. Para solucionar este problema, sigue estos pasos:Define el valor de la propiedad de creación de la tabla de destino como
CREATE_NEVER
. Para obtener más información, consulta Crear una resolución.Usa la versión 2.24.0 o una posterior del SDK de Apache Beam. En las versiones anteriores del SDK, la disposición
CREATE_IF_NEEDED
llama al métodotables.get
para comprobar si la tabla existe.
Para solicitar un aumento de la cuota, ponte en contacto con el equipo de Asistencia o de Ventas. Para obtener más cuota, consulta Solicitar un aumento de cuota. Las solicitudes de aumento de cuota pueden tardar varios días en procesarse. Para proporcionar más información sobre tu solicitud, te recomendamos que incluyas la prioridad del trabajo, el usuario que ejecuta la consulta y el método afectado.
Tu proyecto ha superado la cuota de bytes de consulta analizados gratuitos
BigQuery devuelve este error cuando ejecutas una consulta en el nivel de uso gratuito y la cuenta alcanza el límite mensual de tamaño de datos que se pueden consultar. Para obtener más información sobre las consultas (análisis), consulta el nivel de uso gratuito.
Mensaje de error
Your project exceeded quota for free query bytes scanned
Resolución
Para seguir usando BigQuery, debes actualizar la cuenta a una cuenta de Facturación de Cloud de pago.
Número máximo de errores de cuota de tabledata.list
bytes por segundo y proyecto
BigQuery devuelve este error cuando el número de proyecto mencionado en el mensaje de error alcanza el tamaño máximo de datos que se pueden leer a través de la llamada a la API tabledata.list
en un proyecto por segundo. Para obtener más información, consulta Máximo de tabledata.list
bytes por minuto.
Mensaje de error
Your project:[project number] exceeded quota for tabledata.list bytes per second per project
Resolución
Para solucionar este error, sigue estos pasos:
- En general, te recomendamos que intentes no superar este límite. Por ejemplo, espaciando las solicitudes durante un periodo más largo con retrasos. Si el error no se produce con frecuencia, puedes solucionar el problema implementando reintentos con un tiempo de espera exponencial.
- Si el caso práctico requiere leer de forma rápida y frecuente grandes cantidades de datos de una tabla, le recomendamos que utilice la API Storage Read de BigQuery en lugar de la API
tabledata.list
. Si las sugerencias anteriores no funcionan, puedes solicitar un aumento de cuota desde el panel de control de la API de la consolaGoogle Cloud siguiendo estos pasos:
- Ve al Google Cloud panel de control de la API de la consola.
- En el panel de control, filtra por cuota:
Tabledata list bytes per minute (default quota)
. - Selecciona la cuota y sigue las instrucciones de Solicitar un ajuste de cuota.
La solicitud puede tardar varios días en revisarse y procesarse.
Hay demasiadas instrucciones DML pendientes en la tabla
Este error significa que se ha superado el límite de la cuota del lenguaje de manipulación de datos (DML), ya que se han ejecutado demasiadas declaraciones de DML de mutación simultáneas (UPDATE
, DELETE
y MERGE
) en la misma tabla. Este límite de cuota es por tabla y solo se aplica a las operaciones de DML de mutación, que no incluyen INSERT
.
Resolución
Agrupa los trabajos de DML por lotes siguiendo las prácticas recomendadas para las instrucciones DML.
Número máximo de errores de cuota de tareas de copia por día y proyecto
BigQuery devuelve este error cuando el número de trabajos de copia en ejecución en un proyecto ha superado el límite diario. Para obtener más información sobre el límite de Copias de trabajos por día, consulta Copiar trabajos.
Mensaje de error
Your project exceeded quota for copies per project
Diagnóstico
Si quieres recoger más datos sobre la procedencia de los trabajos de copia, puedes probar lo siguiente:
Si tus trabajos de copia se encuentran en una o en unas pocas regiones, puedes probar a consultar la tabla
INFORMATION_SCHEMA.JOBS
de esas regiones concretas. Por ejemplo:SELECT creation_time, job_id, user_email, destination_table.project_id, destination_table.dataset_id, destination_table.table_id FROM `PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 2 DAY) AND CURRENT_TIMESTAMP() AND job_type = "COPY" order by creation_time DESC
También puedes ajustar el intervalo de tiempo en función del periodo que te interese.
Para ver todos los trabajos de copia de todas las regiones, puedes usar el siguiente filtro en Cloud Logging:
resource.type="bigquery_resource" protoPayload.methodName="jobservice.insert" protoPayload.serviceData.jobInsertRequest.resource.jobConfiguration.tableCopy:*
Resolución
- Si el objetivo de las operaciones de copia frecuentes es crear una instantánea de los datos, te recomendamos que utilices instantáneas de tablas. Las capturas de tablas son una alternativa más económica y rápida a la copia de tablas completas.
- Para solicitar un aumento de cuota, ponte en contacto con el equipo de Asistencia o con el de Ventas. La solicitud puede tardar varios días en revisarse y procesarse. Te recomendamos que indiques la prioridad, el caso práctico y el ID del proyecto en la solicitud.
Error de cuota de bytes de extracción por día superada
BigQuery devuelve este error cuando la exportación supera el límite diario predeterminado de 50 TiB (tebibytes) en un proyecto. Para obtener más información sobre los límites de los trabajos de exportación, consulta el artículo Trabajos de exportación.
Mensaje de error
Your usage exceeded quota for ExtractBytesPerDay
Diagnóstico
Si exporta una tabla que tiene un tamaño superior a 50 TiB, la exportación fallará porque supera el límite de exportación. Para evitar este problema, consulta la solución. Si quieres exportar datos de una tabla de particiones específicas, puedes usar un decorador de partición para identificar las particiones que quieres exportar.
Si quieres recoger los usos de los datos de exportación de los últimos días, puedes probar lo siguiente:
Consulta las cuotas de tu proyecto con criterios de filtro como
Name: Extract bytes per day
oMetric: bigquery.googleapis.com/quota/extract/bytes
junto con el gráfico Mostrar uso para ver tu tendencia de uso durante unos días.También puedes consultar
INFORMATION_SCHEMA.JOBS_BY_PROJECT
para ver el total de bytes extraídos durante varios días. Por ejemplo, la siguiente consulta devuelve el total diario de bytes procesados por las tareas deEXTRACT
en los últimos 7 días.SELECT TIMESTAMP_TRUNC(creation_time, DAY) AS day, SUM ( total_bytes_processed ) / POW(1024, 3) AS total_gigabytes_processed FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY) AND CURRENT_TIMESTAMP() AND job_type = "EXTRACT" GROUP BY 1 ORDER BY 2 DESC
Después, puede acotar los resultados identificando los trabajos específicos que consumen más bytes de lo esperado. En el siguiente ejemplo se devuelven los 100 trabajos de
EXTRACT
principales que han consumido más de 100 gigabytes procesados en los últimos 7 días.SELECT creation_time, job_id, total_bytes_processed/POW(1024, 3) AS total_gigabytes_processed FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY) AND CURRENT_TIMESTAMP() AND job_type="EXTRACT" AND total_bytes_processed > (POW(1024, 3) * 100) ORDER BY total_bytes_processed DESC LIMIT 100
También puedes usar el explorador de trabajos
con filtros como Bytes processed more than
para filtrar los trabajos con un procesamiento elevado
durante un periodo específico.
Resolución
Una forma de resolver este error de cuota es crear una reserva de ranuras y asignar tu proyecto a la reserva con el tipo de trabajo PIPELINE. De esta forma, se puede omitir la comprobación del límite, ya que se usan tus reservas dedicadas en lugar de un grupo de ranuras compartidas gratuito. Si es necesario, puedes eliminar la reserva si quieres usar el grupo de ranuras compartido más adelante.
Para ver otras formas de exportar más de 50 TiB (tebibytes), consulta la sección de notas del artículo Trabajos de exportación.
Número máximo de consultas simultáneas que contienen funciones remotas
BigQuery devuelve este error cuando el número de consultas simultáneas que contienen funciones remotas supera el límite.
Para obtener más información sobre el límite de las funciones remotas, consulte Funciones remotas.
Mensaje de error
Exceeded rate limits: too many concurrent queries with remote functions for this project
Diagnóstico
Para ver los límites de las consultas simultáneas que contienen funciones remotas, consulta Límites de las funciones remotas.
Resolución
- Cuando uses funciones remotas, sigue las prácticas recomendadas para funciones remotas.
- Para solicitar un aumento de cuota, ponte en contacto con el equipo de Asistencia o con el de Ventas. La solicitud puede tardar varios días en revisarse y procesarse. Te recomendamos que indiques la prioridad, el caso práctico y el ID del proyecto en la solicitud.
Errores de límite de tamaño de la aleatorización
BigQuery devuelve este error cuando tu proyecto supera el límite máximo de tamaño de disco y memoria disponible para las operaciones de aleatorización.
Esta cuota se calcula por reserva y se divide entre los proyectos de las reservas. El equipo de Atención al Cliente de Cloud no puede modificar la cuota. Para obtener más información sobre tu uso, consulta la vista INFORMATION_SCHEMA.JOBS_TIMELINE
.
Mensaje de error
Recibes uno de los siguientes mensajes de error:
Quota exceeded: Your project exceeded quota for total shuffle size limit.
Resources exceeded: Your project or organization exceeded the maximum disk and memory limit available for shuffle operations. Consider provisioning more slots, reducing query concurrency, or using more efficient logic in this job.
Resolución
Para solucionar este error, sigue estos pasos:
- Aumentar tu reserva
- Optimizar consultas
- Reduce la simultaneidad de las consultas o materializa los resultados intermedios para reducir la dependencia de los recursos. Para obtener más información, consulta Colas de consultas y Crear vistas materializadas.
Número máximo de instrucciones CREATE MODEL
Este error significa que has superado la cuota de instrucciones CREATE MODEL.
Mensaje de error
Quota exceeded: Your project exceeded quota for CREATE MODEL queries per project.
Resolución
Si superas la cuota
de las instrucciones CREATE MODEL
, envía un correo a
bqml-feedback@google.com
y solicita un aumento de la cuota.