【发布时间】:2011-03-21 13:28:03
【问题描述】:
我正在使用 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
...
}
【问题讨论】:
标签: java google-app-engine callback mapreduce low-level-api