Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

872
Vistas
BigQuery: 404 "La tabla está truncada". cuando se inserta justo después de truncar

Trunco mi tabla ejecutando un queryJob descrito aquí: https://cloud.google.com/bigquery/docs/quickstarts/quickstart-client-libraries

 "truncate table " + PROJECT_ID + "." + datasetName + "." + tableName;

Espero hasta que termine el trabajo a través de

 queryJob = queryJob.waitFor();

Truncar funciona bien.

De todos modos, si hago una inserción justo después de la operación truncada a través de

 InsertAllResponse response = table.insert(rows);

resulta en un

 com.google.cloud.bigquery.BigQueryException: Table is truncated.

con el siguiente registro:

 Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found POST https://www.googleapis.com/bigquery/v2/projects/[MYPROJECTID]/datasets/[MYDATASET]/tables/[MYTABLE]/insertAll?prettyPrint=false { "code" : 404, "errors" : [ { "domain" : "global", "message" : "Table is truncated.", "reason" : "notFound" } ], "message" : "Table is truncated.", "status" : "NOT_FOUND" }

A veces tengo que esperar más de 5 minutos entre truncar e insertar.

Me gustaría verificar si mi tabla todavía está en el estado "La tabla está truncada". periódicamente hasta que este estado desaparezca.

¿Cómo puedo solicitar la API de bigquery para verificar si la tabla está lista para las inserciones?

¿Cómo puedo solicitar bigquery api para obtener el estado de la tabla?

Editar

ejemplo para reproducir se puede encontrar aquí

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Si una tabla se trunca mientras la canalización de transmisión continúa o se realiza una inserción de transmisión en una tabla truncada recientemente, podría recibir algunos errores como los mencionados en la pregunta (La tabla está truncada), ese es el comportamiento esperado. El modo de consistencia de metadatos para InsertAll (API de muy alto QPS) es eventualmente consistente, esto significa que cuando se usa la API InsertAll, puede obtener metadatos de tabla retrasados y devolver el error como una tabla truncada. La forma típica de resolver este problema es retroceder y volver a intentarlo.

Actualmente, no hay ninguna opción en la API de BigQuery para comprobar si la tabla está truncada o no.

over 4 years ago · Santiago Trujillo Denunciar

0

Desafortunadamente, la API no proporciona (¿todavía?) un punto final para verificar el estado truncado de la tabla.

Para evitar este problema, se puede usar un trabajo de carga a través del almacenamiento gc.

Parece que el trabajo de carga respeta este estado, ya que no tengo problemas con truncar/cargar varias veces seguidas.

 public void load(String datasetName, String tableName, String sourceUri) throws InterruptedException { Table table = getTable(datasetName, tableName); Job job = table.load(FormatOptions.json(), sourceUri); // Wait for the job to complete Job completedJob = job.waitFor(RetryOption.initialRetryDelay(Duration.ofSeconds(1)), RetryOption.totalTimeout(Duration.ofMinutes(3))); if (completedJob != null && completedJob.getStatus().getError() == null) { // Job completed successfully } else { // Handle error case } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda