Я использую mapreduce, и мне нужно сохранить некоторые объекты, когда их нет в хранилище данных. Я добавляю новые сущности в DatastoreMutationPool , чтобы эти сущности могли сохраняться при пакетных вызовах. Когда mapreduce заканчивается, вызывается функция обратного вызова. Функция обратного вызова будет использовать некоторые из этих объектов. Мой вопрос заключается в том, будут ли все эти объекты сброшены в хранилище данных до вызова функции обратного вызова, или они все еще могут находиться в DatastoreMutationPool, но не в хранилище данных.
Спасибо.
Пример картографа:
public class MyMapper extends AppEngineMapper<Key, Entity, NullWritable, NullWritable> {
@Override
public void map(Key key, Entity value, Context context) {
...
DatastoreMutationPool mutationPool = this.getAppEngineContext(context).getMutationPool();
mutationPool.put(entity);
}
}
Пример обратного вызова:
@RequestMapping(value="/callback/function",method=RequestMethod.POST)
public void callback(@RequestParam("job_id") String jobIdName){
JobID jobId = JobID.forName(jobIdName);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
//search for some entities persisted in the mapper
...
}