我已经使用自己的作业 ID 成功创建了 Google 查询作业。并且昨天能够再次使用该作业 ID 并获得成功的结果。但同一个 Job id 工作不正常。我在 google bigquery UI 中尝试了带有项目 Id 的作业 id,但出现了与下面的“404”相同的错误
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found: Table<projectId:some random generated String.some random generated String>"
}
],
"code": 404,
"message": "Not Found: Table <projectId:some random generated String.some random generated String>
}
}
Run Code Online (Sandbox Code Playgroud)
请帮助我,约伯还有一生吗?或者创建作业 ID 时需要任何特定配置才能永久工作?
我正在使用 Google Bigquery 的 Java API 来执行上述实现。找到下面使用的逻辑: 查询作业创建逻辑:
String query = "SELECT count(*) AS TOTAL_RECORDS FROM :dataset.:tablename;"
String expectedJobId = "someuniqueString";
JobConfigurationQuery queryConfig = new JobConfigurationQuery()
.setQuery(query);
queryConfig.setUseQueryCache(true);
JobConfiguration config = new JobConfiguration()
.setQuery(queryConfig);
JobReference jobReference = new JobReference();
jobReference.setJobId(expectedJobId);
jobReference.setProjectId(PROJECT_ID);
Job job = new Job().setId(expectedJobId).setConfiguration(
config);
job.setJobReference(jobReference);
job = bigqueryService.jobs()
.insert(PROJECT_ID, job).execute();
Run Code Online (Sandbox Code Playgroud)
使用上面的 JobId 检索结果:
GetQueryResults queryRequest = bigqueryService.jobs()
.getQueryResults(PROJECT_ID, expectedJobId);
GetQueryResultsResponse queryResponse = queryRequest.execute();
Run Code Online (Sandbox Code Playgroud)
您看到的错误不是查找作业的问题,而是查找结果表的问题。正如您所注意到的,getQueryResults()对于特定的工作最多只能工作 24 小时;之后,创建用于存储结果的表将过期并被清理。
如果您发现这种情况在 24 小时内发生,您可能需要检查以确保作业确实成功完成。您可以用来bigqueryService.jobs.get()查找工作状态。
如果这没有帮助,如果您发送作业 ID,我们(BigQuery 团队)可以在服务器日志中查找该作业的进展情况。
| 归档时间: |
|
| 查看次数: |
4256 次 |
| 最近记录: |