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

时间:2014-01-27 12:36:39

标签: google-bigquery

我已成功创建了自己的职位ID的Google查询职位。并且能够再次使用作业ID并且昨天获得了成功的结果。 但同样的工作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>
 }
}

请帮帮我,约伯有没有续航时间?或创建作业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();

使用上面的JobId检索结果:

GetQueryResults queryRequest = bigqueryService.jobs()
                    .getQueryResults(PROJECT_ID, expectedJobId);
            GetQueryResultsResponse queryResponse = queryRequest.execute();

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

有时问题是数据集位置不正确。在我的代码中,我有一个配置,我根据它在执行查询时设置数据集位置。我弄乱了位置并开始收到此错误。经过2个小时的调试终于找到问题所在。

更正了数据集的位置,效果很好。