Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

878
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda