- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将大约 1,000,000 条记录导入到数据存储中。更重要的是,我想将其中一些记录合并为一个记录。到目前为止,我尝试过的所有操作都需要很长时间,并且如果后端中途终止任务并在另一台计算机上重新启动它,则不太适合恢复。
我的第一次尝试是在每次插入之前查询数据存储,以将数据添加到现有匹配记录或插入新记录。
Crops local = // read from CSV
for (...)
{
Crops db = ObjectifyService.ofy().load().type(Crops.class).
id(local.country + "_" + local.cropType + "_" +
new Integer(local.year).toString()).now();
if (db == null)
{
db = local;
crops.put(composite, db);
}
else
{
// add additional data to db
}
ObjectifyService.ofy().save().entity(db).now();
}
完成此任务的预计时间为 13 小时。
所以我尝试在本地聚合数据
Crops local = // read from CSV
HashMap<String, Crops> crops = ...
for (...)
{
String composite = local.country + "_" + local.cropType + "_" +
new Integer(local.year).toString();
Crops db = crops.get(composite);
if (db == null)
{
db = local;
crops.put(composite, db);
}
else
{
// add additional data to db
}
}
ObjectifyService.ofy().save().entities(crops.values()).now();
这会导致程序由于堆变得太大而终止。
我工作的一个变体是将聚合数据分割成 1000 条记录的 block 来存储它们。
Iterator<Crops> sit = crops.values().iterator();
List<Crops> list = new ArrayList<Crops>(1000);
i = 0;
while (sit.hasNext())
{
list.add(sit.next());
i++;
if (i >= 1000)
{
ObjectifyService.ofy().save().entities(list).now();
list.clear();
i = 0;
}
}
ObjectifyService.ofy().save().entities(list).now();
但完成此任务的预计时间为 80 小时。
我想尝试的下一件事是并行插入这些 1000 个 block ,而不是顺序插入。
但在我在这上面浪费更多时间之前,我想问一下我是否走在正确的道路上,或者我的做法完全错误。也许在 13 小时内不可能获得这样的导入?
将大型数据集导入数据存储区的最快方法是什么?
最佳答案
看看MapReduce - 它是专门为可以分割成更小的 block 的大量作业而设计的。
不需要检查实体是否已存在,除非该实体中存在某些数据,如果覆盖它就会丢失。如果可以安全地覆盖它,只需插入您的实体即可。这应该可以将您的时间减少一半或更多。
批处理数据库调用将显着加快速度。
我不知道 local.year 是什么类型,但如果它是 int
,你可以简单地这样做:
String composite = local.country + "_" + local.cropType + "_" + local.year;
关于java - GAE 物化规模巨大?进口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26958585/
我正在尝试缩放 :before我的内容 到目前为止,悬停时会应用样式,但没有视觉变化,:before保持相同的比例。 到目前为止我得到了什么: 12 SASS(CSS): .c
我正在使用 CGAffineTransformMake 转换 View 。它可以旋转、缩放和平移。这很好用。但我无法找到一种方法将比例限制为最大尺寸。 如果超出比例,我仍然需要应用当前的旋转和平移。
我想知道当我无法访问存储它的实际硬盘时是否有办法确定我的 svn repo 的大小?我之所以这么问,是因为我们的项目托管在谷歌代码上。有 1GB 的限制。我怀疑我们是否接近它,但我真的不知道并且想密切
抱歉,我已经花了大约 5 个小时来研究这个问题,但无法弄清楚发生了什么。我正在玩 http://bl.ocks.org/mbostock 上的一些示例网站并尝试向堆积条形图添加图例。 为此,我设置了比
我正在使用这个: var response = client.Search(s => s.Query(q => q.Ids(c => c.Values(new List(tempDictionary.
我想扩展一个 wildfly 容器,该容器暴露了多个端口并具有确定性结果。 docker-compose.yml version: '3' services: wildfly-server:
我目前正在使用 Linode 来部署我的应用程序。我有 2 台服务器,1 台数据库服务器,前面有 1 个负载均衡器。 我使用Redis作为数据库和NowJS来实现聊天室。使用 Pub/Sub 一切正常
在开发过程中,我需要经常更新我的 Web 应用程序源代码并将更新后的 war 部署到远程 Tomcat 服务器。上传一场大战 (25MB) 在我的连接上花费的时间太长(大约 30 分钟),这非常低效。
我有一个在生产中需要 websocket 连接的网络服务器。我使用 docker-compose 和 nginx 作为代理来部署它。 所以我的撰写文件如下所示: version: '2' servic
我的 Web 服务是在 Grails/Gradle 中创建的,其中包含许多依赖项 jar,使得部署在 tomcat8 中的 war 规模很大。有没有什么办法可以让我的 war 使用来自不同位置的依赖项
我是一名优秀的程序员,十分优秀!