2017-08-30 90 views
0

今晚我的一個批處理作業失敗,出現運行時異常。它將數據寫入數據存儲區,就像今天晚上運行的其他200個作業一樣。這一次失敗的原因很長,其根源應該是這樣的:Google Dataflow將不足的數據寫入數據存儲區

Caused by: com.google.datastore.v1.client.DatastoreException: I/O error, code=UNAVAILABLE 
    at com.google.datastore.v1.client.RemoteRpc.makeException(RemoteRpc.java:126) 
    at com.google.datastore.v1.client.RemoteRpc.call(RemoteRpc.java:95) 
    at com.google.datastore.v1.client.Datastore.commit(Datastore.java:84) 
    at com.google.cloud.dataflow.sdk.io.datastore.DatastoreV1$DatastoreWriterFn.flushBatch(DatastoreV1.java:925) 
    at com.google.cloud.dataflow.sdk.io.datastore.DatastoreV1$DatastoreWriterFn.processElement(DatastoreV1.java:892) 
Caused by: java.io.IOException: insufficient data written 
    at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.close(HttpURLConnection.java:3501) 
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:81) 
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:981) 
    at com.google.datastore.v1.client.RemoteRpc.call(RemoteRpc.java:87) 
    at com.google.datastore.v1.client.Datastore.commit(Datastore.java:84) 
    at com.google.cloud.dataflow.sdk.io.datastore.DatastoreV1$DatastoreWriterFn.flushBatch(DatastoreV1.java:925) 
    at com.google.cloud.dataflow.sdk.io.datastore.DatastoreV1$DatastoreWriterFn.processElement(DatastoreV1.java:892) 
    at com.google.cloud.dataflow.sdk.util.SimpleDoFnRunner.invokeProcessElement(SimpleDoFnRunner.java:49) 
    at com.google.cloud.dataflow.sdk.util.DoFnRunnerBase.processElement(DoFnRunnerBase.java:139) 
    at com.google.cloud.dataflow.sdk.runners.worker.SimpleParDoFn.processElement(SimpleParDoFn.java:188) 
    at com.google.cloud.dataflow.sdk.runners.worker.ForwardingParDoFn.processElement(ForwardingParDoFn.java:42) 
    at com.google.cloud.dataflow.sdk.runners. 

這是怎麼發生的?這與我運行的所有其他工作非常相似。我使用的是數據流,版本1.9.0和標準DatastoreIO.v1()寫....

與此錯誤消息的jobIds:

2017-08-29_17_05_19-6961364220840664744

2017-08-29_16_40_46-15665765683196208095

是否有可能檢索錯誤/從外部應用程序作業日誌(不是雲控制檯)來自動能夠重新開始工作,如果他們通常會成功,因q而失敗問題或其他原因是暫時的? 在此先感謝

+1

我會調查工作。有可能連接到數據存儲或類似的只是一個暫時的問題。您可以使用數據流的命令行界面檢查作業的失敗/成功狀態,這應該使您能夠列出作業並查詢其狀態。 https://cloud.google.com/dataflow/pipelines/dataflow-command-line-intf –

+0

我重試了這些工作,但不幸的是,他們拋出了相同的例外。這很奇怪,因爲如上所述,它們與大約100個全部成功運行的其他作業類似。我會檢查這些工作的輸入數據是否與其他工作有奇怪的不同。在此先感謝您的幫助@LaraSchmidt 重試的JobIds:2017-08-30_05_31_24-7610218350337775734 和2017-08-30_05_33_22-3164534937414554703 – user2122552

回答

0

這很可能是因爲DatastoreIO正試圖在一次RPC調用中寫入比Datastore RPC大小限制允許的更多突變。這與數據有關 - 假設此作業的數據與其他作業的數據有所不同。無論如何:2.1.0版中的was fixed這個問題 - 更新SDK應該會有所幫助。

相關問題