gpt4 book ai didi

javascript - 为什么将数据加载到 Meteor Collection 中需要这么长时间?

转载 作者:行者123 更新时间:2023-11-30 10:26:00 26 4
gpt4 key购买 nike

我正在尝试使用 Meteor 构建一个数据可视化应用程序来可视化大型数据集。数据目前存储在一个CSV格式的数据文件中,大约64MB。

我正在使用 node-csv 插件将此数据文件加载到 Meteor Collection 中(代码如下)。但是每 10k 条记录大约需要 1 分钟,按照这个速度,将整个文件加载到 Collection 中大约需要 1.5 小时。在此期间,Meteor 服务器对 Web 请求没有响应。

这对我来说似乎异常缓慢。这是正常的吗? Meteor 不是为处理中等数量的数据而设计的吗?还是有比我发现的方法更好的方法来执行此数据导入过程?

var csv = Meteor.require('CSV');
var fs = Meteor.require('fs');
var path = Npm.require('path');

function loadData() {
var basepath = path.resolve('.').split('.meteor')[0];
console.log('Loading data into Meteor...');

csv().from.stream(
fs.createReadStream(basepath+'server/data/enron_data.csv'),
{'escape': '\\'})
.on('record', Meteor.bindEnvironment(function(row, index) {
if ((index % 10000) == 0) {
console.log('Processing:', index, row);
}
Emails.insert({
'sender_id': row[0],
'recipient_id': row[1],
'recipient_type': row[2],
'date': row[3],
'timezone': row[4],
'subject': row[5]
})
}, function(error) {
console.log('Error in bindEnvironment:', error);
}
))
.on('error', function(err) {
console.log('Error reading CSV:', err);
})
.on('end', function(count) {
console.log(count, 'records read');
});
}

最佳答案

即使您在 meteor 环境之外执行此操作,一次加载一行数据也确实效率低下。我想你想要的工具是 mongoimport .

这可能不是很明显,但是您不需要使用 meteor 插入文档来使用 meteor 处理您的文档。

当您的集合中有 0 个文档时(或任何对您的情况有意义的基本条件),您可以尝试从 Meteor.startup 调用 mongoimport。我没有尝试过这个,所以我不能说这有多痛苦,但我想你可以调用 child_process.spawn 来启动 mongoimport。如果由于某种原因不起作用,您总是可以将其放入脚本中,并在每次执行 meteor reset 时运行该脚本。

旁注 - 我相信您的静态服务器 Assets 的合适位置是 private 目录。这也让您可以使用 Assets API 来访问这些文件。

关于javascript - 为什么将数据加载到 Meteor Collection 中需要这么长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19549337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com