1
我正在使用mapreduce,并且当它们不在数据存储中时,我需要坚持一些实体。我将新实体添加到DatastoreMutationPool,因此这些实体可以通过批处理调用持续保存。当mapreduce结束时,调用一个回调函数。回调函数将使用其中一些实体。我的问题是,在调用回调函数之前,它们的所有实体是否都会刷新到数据存储区,或者它们仍然可以位于DatastoreMutationPool中,但不在数据存储区中。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
...
}