当我们处理查询/加载作业时,我们有时会按照建议的in this book符合SocketReadTimeOut 我们希望自己设置作业ID,以便我们可以在这种情况下检查作业状态,并确保没有提交重复的作业来使我们的数据无效。但是,每次Bigquery生成新的工作ID时,它都不起作用。例如,如下所示:
...
job.setConfiguration(config);
job.setId("job_wRGTy7WaCKKcTdlE-nDWGDTZVI4");
Bigquery.Jobs.Insert insert = sBIGQUERY.jobs().insert(mProjectId, job,content);
JobReference jobRef = insert.execute().getJobReference();
System.out.println(jobRef.getJobId());
从最后一行打印出来的不是" job_wRGTy7WaCKKcTdlE-nDWGDTZVI4"但是" job_CnuEOr4IEKHjLls-U1UDSBS0K-4"。为什么?如何正确设置作业ID?
答案 0 :(得分:2)
“id”是一个仅输出字段,它是REST api要求的工件('所有对象应该具有唯一的id'。作业ID在项目中是唯一的,因此对象id不等于作业ID)。
我相信你想做的是job.setJobReference(new JobReference().setJobId(...))
而不是job.setId()
。