결과를 푸시 할 대상 테이블을 지정하는 Java REST API를 통해 BigQuery에 대해 야간 쿼리를 실행합니다 (write disposition = WRITE_TRUNCATE). 오늘의 쿼리는 오류없이 실행되는 것처럼 보였지만 결과가 대상 테이블로 푸시되지 않았습니다.
이 쿼리는 몇 주 동안 실행되었으며 문제가 없었습니다. 코드도 변경되지 않았습니다.
"실패"한 후 수동으로 두 번째 실행하면 제대로 작동했습니다. 우리가 발견 한 것은 바로이 결함이었으며 다시 발생할 수 있다는 우려가 있습니다.
"실패한"쿼리에서 기록 된 JSON 응답은 괜찮아 보입니다 (민감한 데이터를 난독 처리했습니다).
INFO: Job finished successfully: {
"configuration" : {
"dryRun" : false,
"query" : {
"createDisposition" : "CREATE_IF_NEEDED",
"destinationTable" : {
"datasetId" : "[REMOVED]",
"projectId" : "[REMOVED]",
"tableId" : "[REMOVED]"
},
"priority" : "INTERACTIVE",
"query" : "[REMOVED]",
"writeDisposition" : "WRITE_TRUNCATE"
}
},
"etag" : "[REMOVED]",
"id" : "[REMOVED]",
"jobReference" : {
"jobId" : "[REMOVED]",
"projectId" : "[REMOVED]"
},
"kind" : "bigquery#job",
"selfLink" : "[REMOVED]",
"statistics" : {
"creationTime" : "1390435780070",
"endTime" : "1390435780769",
"query" : {
"cacheHit" : false,
"totalBytesProcessed" : "12546"
},
"startTime" : "1390435780245",
"totalBytesProcessed" : "12546"
},
"status" : {
"state" : "DONE"
}
}
"시도해보세요!" 여기 에 Jobs / GET의 경우 작업 ID를 연결하면 작업이 실제로 성공했으며 로깅 된 출력 (위에 붙여 넣기)과 일치 함을 보여줍니다.
웹 콘솔을 확인하면 대상 테이블이 잘 렸지만 업데이트되지 않은 것으로 표시됩니다. 이상하게도 "Last Modified"가 업데이트되지 않았습니다 (페이지를 여러 번 새로 고쳤습니다).
http://i.stack.imgur.com/384NL.png
BigQuery에서 쿼리가 성공적으로 실행되는 것처럼 보이지만 대상 / 참조 테이블이 지정된 경우 결과가 아직 푸시되지 않은 상태에서 테이블이 잘린 것처럼 이전에 BigQuery에서 이것을 경험 한 사람이 있습니까?
그래서 우리는 이것의 문제가 무엇인지 알아 냈습니다. 지난 며칠 동안 몇 번 다시 실패했기 때문에 더 자세히 조사했습니다.
실행중인 쿼리는 바로 전에 실행되는 다른 쿼리에 종속됩니다. 첫 번째 쿼리가 완료 될 때까지 기다리지 만 (작업 상태 = "DONE") 실제로 완전히 완료되지 않았으며 데이터를 아직 사용할 수없는 것처럼 보입니다.
현재 프로세스는 다음과 같습니다.
첫 번째 쿼리에 스트리밍을 사용할 때 데이터가 실제로 표시되고 BigQuery에서 사용할 수있게되는 데 약 5 ~ 10 초가 걸린다는 사실을 확인했습니다.
우리는 매우 추한 해결 방법을 사용했습니다. 첫 번째 쿼리 후 몇 초 후에 다음 쿼리를 실행하기 만하면됩니다. 우아하지는 않지만 작동합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다