【发布时间】:2016-05-04 07:15:51
【问题描述】:
我正在使用 RemoteAPI (Java) 处理大型数据集、约 90K 实体,并执行一些数据迁移。
int CHUNK_SIZE = 500;
int LIMIT = 900;
QueryResultList<Entity> result = ds.prepare(entityQuery)
.asQueryResultList(
FetchOptions.Builder
.withPrefetchSize(CHUNK_SIZE)
.limit(LIMIT)
.chunkSize(CHUNK_SIZE)
).startCursor(cursor);
将查询 LIMIT 设置为 900result.size() 是整个数据集,~90K,而不是 900。如果我尝试较低的LIMIT,比如300,结果大小就是预期的大小(300)。
我在这里缺少什么?从文档中我无法弄清楚为什么它会产生我在这里描述的行为。
【问题讨论】:
-
我可能在说一些愚蠢的事情,但是您是否尝试过更改选项的顺序? FetchOptions.Builder.withLimit(LIMIT) .withPrefetchSize(CHUNK_SIZE) .chunkSize(CHUNK_SIZE) ).startCursor(cursor);
-
如果我错了,请纠正我,但我没有看到
.limit方法出现在FetchOptions.Builder对象的方法摘要中(请参阅:cloud.google.com/appengine/docs/java/javadoc/com/google/…)。应该改为.withLimit。
标签: java google-app-engine google-cloud-datastore