Я использую 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
...
}