Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按顺序迭代和更新大型数据集的后台任务_Java_Google App Engine - Fatal编程技术网

Java 按顺序迭代和更新大型数据集的后台任务

Java 按顺序迭代和更新大型数据集的后台任务,java,google-app-engine,Java,Google App Engine,作为后台任务,我需要按索引顺序迭代相当大的实体数据集。(实体数量约200000多家) 我知道TaskQueue API和一个可能的后台实例是一个不错的选择,但我有时会遇到DataStoreUnavailable和timeout异常,我要寻找的是一种可靠的方式,使用GAE API在后台进行迭代和更新 了解迭代的进度对我来说也是非常有用的 我也知道实验性的Java Map Reduce API,但在我看来,这更像是一个并行处理API,而不是有序的。(如果我错了,请纠正我。目前Java Map Red

作为后台任务,我需要按索引顺序迭代相当大的实体数据集。(实体数量约200000多家)

我知道TaskQueue API和一个可能的后台实例是一个不错的选择,但我有时会遇到DataStoreUnavailable和timeout异常,我要寻找的是一种可靠的方式,使用GAE API在后台进行迭代和更新

了解迭代的进度对我来说也是非常有用的

我也知道实验性的Java Map Reduce API,但在我看来,这更像是一个并行处理API,而不是有序的。(如果我错了,请纠正我。目前Java Map Reduce示例似乎很少)


做这类工作有什么具体的例子或好的模式吗

只处理作业中有限数量的实体

像往常一样从查询开始,但是如果作业请求具有游标参数,则将其应用于查询。然后只获取固定数量的实体,而不是获取所有实体


当作业完成,但有更多实体要处理时,检索当前查询游标,并使用游标作为请求参数再次安排同一作业。

仅处理作业中有限数量的实体

像往常一样从查询开始,但是如果作业请求具有游标参数,则将其应用于查询。然后只获取固定数量的实体,而不是获取所有实体


当作业完成,但有更多实体要处理时,检索当前查询游标,并使用游标作为请求参数再次安排相同的作业。

是的,您描述的是这类工作的明显核心元素。但是你不应该自己编写这些代码。应该有一个安全而优雅地执行此操作的框架,就像MapReduce提供了更并行的处理风格一样。如果您纯粹是在TaskQueue API之上完成这类工作,那么您必须处理每个实现的所有注意事项。事实上,拥有一个用于所有这些的框架会很好。不幸的是,显而易见的一个(MapReduce)仍然是实验性的,没有很好的文档记录。是的,您所描述的是这类工作的显而易见的核心元素。但是你不应该自己编写这些代码。应该有一个安全而优雅地执行此操作的框架,就像MapReduce提供了更并行的处理风格一样。如果您纯粹是在TaskQueue API之上完成这类工作,那么您必须处理每个实现的所有注意事项。事实上,拥有一个用于所有这些的框架会很好。不幸的是,显而易见的一个(MapReduce)仍然是实验性的,没有很好的文档记录。