2016-04-26 4 views
0

私は非常に大きなデータセットを持ち、特定のエンティティの種類を更新したいと考えています。私はGoogleAppEngineでMapReduceライブラリを調べています。私はここに挙げた例を辿ってきました。RetryHandler Google AppengineでMapOnlyMapperを使用しているときの例外

https://github.com/GoogleCloudPlatform/appengine-mapreduce/tree/master/java/example/src/com/google/appengine/demos/mapreduce/entitycount

私は基本的にやっていることは、これで私のMapSpecificationで

MapSpecification<Entity, Entity, Void> spec = new MapSpecification.Builder<>(
       new DatastoreKeyInput(query,2), 
       new UrlFlattenMapper(), 
       new DatastoreOutput()) 
       .setJobName("Flatten URLs entities") 
       .build(); 

とDatastoreOutputライターが戻ってそれを書くことのために私のマッパーは基本的に、エンティティの操作を実行し、それを発行データベースに格納します。

私の問題は、エンティティが正常に更新されていることです。私のMapperTaskでendSliceも呼び出されています。しかし、ジョブズは完了していません。私はこの問題を回避することができたhaventは

[INFO] INFO: RetryHelper(28.07 ms, 1 attempts, [email protected]): Attempt #1 failed [java.lang.RuntimeException: Can't serialize object: MapOnlyShardTask[context=IncrementalTaskContext[jobId=3c041e68-5041-458c-994b-290cd941f8bb, shardNumber=1, shardCount=2, lastWorkItem=Topics("jzdh"), workerCallCount=297, workerTimeMillis=42513], inputExhausted=true, isFirstSlice=false]], sleeping for 1028 ms 
[INFO] Apr 26, 2016 4:39:37 PM com.google.appengine.tools.cloudstorage.RetryHelper doRetry 
[INFO] INFO: RetryHelper(1.085 s, 2 attempts, [email protected]): Attempt #2 failed [java.lang.RuntimeException: Can't serialize object: MapOnlyShardTask[context=IncrementalTaskContext[jobId=3c041e68-5041-458c-994b-290cd941f8bb, shardNumber=1, shardCount=2, lastWorkItem=Topics("jzdh"), workerCallCount=297, workerTimeMillis=42513], inputExhausted=true, isFirstSlice=false]], sleeping for 2435 ms 
[INFO] Apr 26, 2016 4:39:37 PM com.google.appengine.tools.cloudstorage.RetryHelper doRetry 
[INFO] INFO: RetryHelper(3.562 s, 3 attempts, [email protected]): Attempt #3 failed [java.lang.RuntimeException: Can't serialize object: MapOnlyShardTask[context=IncrementalTaskContext[jobId=3c041e68-5041-458c-994b-290cd941f8bb, shardNumber=0, shardCount=2, lastWorkItem=Topics("jz63"), workerCallCount=289, workerTimeMillis=41536], inputExhausted=true, isFirstSlice=false]], sleeping for 3421 ms 
[INFO] Apr 26, 2016 4:39:39 PM com.google.appengine.tools.cloudstorage.RetryHelper doRetry 
[INFO] INFO: RetryHelper(3.567 s, 3 attempts, [email protected]): Attempt #3 failed [java.lang.RuntimeException: Can't serialize object: MapOnlyShardTask[context=IncrementalTaskContext[jobId=3c041e68-5041-458c-994b-290cd941f8bb, shardNumber=1, shardCount=2, lastWorkItem=Topics("jzdh"), workerCallCount=297, workerTimeMillis=42513], inputExhausted=true, isFirstSlice=false]], sleeping for 3340 ms 
[INFO] Apr 26, 2016 4:39:41 PM com.google.appengine.tools.cloudstorage.RetryHelper doRetry 
[INFO] INFO: RetryHelper(7.015 s, 4 attempts, [email protected]): Attempt #4 failed [java.lang.RuntimeException: Can't serialize object: MapOnlyShardTask[context=IncrementalTaskContext[jobId=3c041e68-5041-458c-994b-290cd941f8bb, shardNumber=0, shardCount=2, lastWorkItem=Topics("jz63"), workerCallCount=289, workerTimeMillis=41536], inputExhausted=true, isFirstSlice=false]], sleeping for 6941 ms 
[INFO] Apr 26, 2016 4:39:42 PM com.google.appengine.tools.cloudstorage.RetryHelper doRetry 

これらのエラーを得続ける、私がやって何ができるか上の任意のヘルプまたはポインタをいただければ幸いです。

答えて

0

私の場合の犯人は、マップジョブで使用した小さなDatastoreフィールドです。私はフィールドの前に一過性を置き、問題は解決しました。

関連する問題