2017-08-30 9 views
0

今夜のバッチジョブのうちの1つは、ランタイム例外で失敗しました。今夜実行していた他の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

私は仕事を調査します。データストアなどに接続する一時的な問題があった可能性があります。データフローのコマンドラインインターフェイスを使用してジョブの失敗/成功の状態を確認することができます。これにより、ジョブを一覧表示してステータスを問い合わせることができます。 –

+0

私もこれらのジョブを再試行しましたが、残念ながら彼らは同じ例外を投げました。上で述べたように、〜100の他のすべてのジョブがすべて正常に実行されているのと似ているので、奇妙です。これらのジョブの入力データが他のデータと奇妙に違うかどうかを確認します。 @LaraSchmidtのご協力をお寄せいただきありがとうございます 再試行された求人ID:2017-08-30_05_31_24-7610218350337775734 および2017-08-30_05_33_22-3164534937414554703 – user2122552

答えて

0

これは、DatastoreIOが1つのRPC呼び出しでデータストアのRPCサイズの制限よりも多くの突然変異を書き込もうとしているためです。これはデータ依存です。このジョブのデータが他のジョブのデータと多少異なるとします。いずれにしても、この問題was fixed(2.1.0) - SDKのアップデートが役立ちます。

関連する問題