2014-09-18 33 views
1

當我們處理查詢/加載作業時,我們有時會遇到SocketReadTimeOut,建議使用in this book
我們希望自己設置作業ID,這樣我們就可以在這種情況下檢查作業狀態,並確保沒有提交重複作業來使我們的數據無效。但它不起作用,因爲每次BigQuery會生成一個新的工作id。例如,如下圖所示:Bigquery:爲什麼設置job 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?

回答

1

「id」是一個僅輸出字段,它是REST api需求的工件('所有對象都應該有一個唯一的ID'),Job ID只在項目中唯一,所以對象ID不等於作業ID)。

我相信你想要做的是job.setJobReference(new JobReference().setJobId(...))而不是job.setId()

+0

但是在提交之前,我實際上從job.getJobReference() – foxwendy 2014-09-18 18:18:39

+1

中得到null。我嘗試jobRef =新的JobReference(),jobRef.setJobId(..),job.setJobReference(jobRef),然後提交該作業,它的工作原理。 – foxwendy 2014-09-18 19:10:55

相關問題