2012-12-20 57 views
2

我正在嘗試將數據加載到BigQuery中,並且加載作業將無限期地保留在掛起狀態(我等待大約5分鐘)。我還需要做些什麼才能將工作轉移到運行狀態?在應用引擎上運行BigQuery加載作業會陷入掛起狀態

log.log(new LogRecord(Level.INFO, "Writing to big query table")); 
JobConfigurationLoad loadConf = new JobConfigurationLoad(); 
loadConf.setDestinationTable(new TableReference().setProjectId(PROJECT_ID) 
    .setDatasetId(datasetId).setTableId(TABLE_ID)); 
loadConf.setWriteDisposition("WRITE_APPEND"); 
loadConf.setSourceUris(Arrays.asList("gs://" + bucket + "/" + "something.json")); 
JobConfiguration configuration = new JobConfiguration().setLoad(loadConf); 
Job loadJob = new Job().setConfiguration(configuration); 
Jobs.Insert insertData = bigQuery.jobs().insert(PROJECT_ID, loadJob); 
Job insertResp = insertData.execute(); 

JobStatus status = insertResp.getStatus(); 
    while (!status.getState().equals("done")) { 
     System.out.println(status.getState()); 
     status = insertResp.getStatus(); 
     Thread.sleep(10000); 
} 
... 
+0

進口的要求BigQuery的排隊我們有超過進口了大約一個經驗1小時,因此請嘗試等待更多,您應該使用任務API或後端來監視此類工作,因爲請求和任務超時 –

+0

您能否發送處於掛起狀態的作業的作業ID? –

+0

pogoapps.com:pogoapps:job_9c2f67bee94342f397daa07fcb004568 –

回答

1

對於沒有得到最新的作業結果的問題,這段代碼應該工作(如果你添加到你上面有什麼。

// Insert the load job. 
Job job = insertData.execute(); 
JobId jobId = job.getJobId(); 

long startTime = System.currentTimeMillis(); 

while (!job.getStatus().getState().equals("DONE")) { 
    // Pause execution for ten seconds before polling job status again 
    Thread.sleep(10000); 

    long elapsedTime = System.currentTimeMillis() - startTime; 
    System.out.format("Job status (%dms) %s: %s\n", elapsedTime, 
     jobId.getJobId(), job.getStatus().getState());  

    // Poll the server for job completion state. 
    job = bigquery.jobs().get(projectId, jobId).execute(); 
} 
if (job.getStatus().getErrorResult() != null) { 
    // The job ended with an error. 
    System.out.format("Job %s ended with error %s", job.getJobId(), 
     job.getStatus().getErrorResult().getMessage()); 
} 
1

我已經挖成這個有點,而問題是,你做了2300個導入作業到同一個表,添加一個新的每隔幾秒鐘。這些工作開始排隊,因爲新工作的到達速度超過了他們可以處理的時間。這造成了更長和更長的待處理時間。看起來大量的工作可能是無意的,因爲他們似乎都將同一個文件導入同一個表。順便提一下,作業全部失敗,並顯示invalid_value錯誤。

請注意,這種模式只發生在12/20。除了這個日期之外,我找不到任何你持續時間超過10分鐘的其他工作。

+0

我正在使用5分鐘的租約關閉一個TaskQueue,所以它可能會被多次運行。如果這項工作在5分鐘內沒有完成。我今天從本地主機運行了另一個Job,取出了任務隊列代碼,並且在15分鐘後仍然未完成。 2013年1月3日下午3時22分48秒警告:工作:{「jobId」:「job_fe52dd008e2e4346a5d7b1c4249050d0」,「projectId」:「pogoapps.com:pogoapps」}仍在等待 –

+0

2個問題。上面指定的代碼實際上並未重新檢查bigquery服務器的工作狀態 - 它只是繼續查看永遠不會改變的本地狀態。您需要重做執行操作。 –

+0

第二個問題:您正在執行json導入,但未指定json格式。您應該將sourceFormat設置爲NEWLINE_DELIMITED_JSON。 –

相關問題