Google BigQuery getQueryResults 返回有效作业 ID 的 404 错误

Gan*_*esh 5 google-bigquery

我已经使用自己的作业 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)

Jor*_*ani 2

您看到的错误不是查找作业的问题,而是查找结果表的问题。正如您所注意到的,getQueryResults()对于特定的工作最多只能工作 24 小时;之后,创建用于存储结果的表将过期并被清理。

如果您发现这种情况在 24 小时内发生,您可能需要检查以确保作业确实成功完成。您可以用来bigqueryService.jobs.get()查找工作状态。

如果这没有帮助,如果您发送作业 ID,我们(BigQuery 团队)可以在服务器日志中查找该作业的进展情况。