在应用程序引擎的 java 实例中,我使用 mapreduce 迭代实体集合以进行一些汇总。
当我运行 10 个分片时,我得到了很多:
/mapreduce/workerCallback
com.google.apphosting.api.ApiProxy$RequestTooLargeException:
The request to API call datastore_v3.Put() was too large.
我的映射器试图处理大约 70,000 个实体,每个实体大约 750 个字节。对于我的映射器的每次调用,我可能会执行几十次数据存储读取和两次数据存储更新。
我确信我的个人实体远未达到 1MB 数据存储的限制。运行更多的分片并没有真正的帮助。
我注意到 mapreduce 添加了一些实体类型,其中之一是 MR-IncrementalTask。当这些错误出现时,MR-IncrementalTask 实体会变大,比如 800k 或 900k。我怀疑这些错误与这些变得太大有关。
那么,为什么这些会变得如此之大,我会做什么样的事情来促成呢?
谢谢大家。