我正在使用 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
...
}