Tag: bigdata

如何通过弹性search在expressjs中解决Not Found消息

你能告诉我如何解决expressjs这个错误信息 POST /test/_search 404 45.691 ms – 1235 Trace: Not Found 我刚刚尝试这个代码expressjs与elasticsearch /* GET home page. */ router.get('/', function(req, res, next) { client.search({ index: 'test', body:{ query:{ multi_match:{ query: 'i5', fields: ['title'] } } } }).then(function (response) { var hits = response.hits.hits; console.log(response); console.log(response.hits); console.log(response.hits.hits); }, function (error) { console.trace(error.message); }) res.render('index', { title: 'Express'}); […]

我怎样才能抓取网页find一个主题的链接/网站?

我真的不知道从哪个项目开始,所以请原谅这个模糊的标题。 当我谷歌“如何编程”,我想在一些可行的forms,search的结果。 我不知道是否可以用Google或其他方式search这个,但是如果不能,我怎样才能build立自己的软件来获取这些数据呢? 谷歌如何运行它的search? 我知道JavaScript和NodeJS – 我还需要学习什么? (我肯定可以想象某种数据库)。

在.CSV中查找唯一值

我有一个吨的.CSV数据文件,我的意思是一个TON(8000万行)的数据。 数据全部在两列,如下所示: src | dst 123123 | 456456 321321 | 654654 987987 | 789789 123123 | 456456 等八千万行。 (注意:我知道分隔符应该是.CSV中的',',但在这种情况下是'|',文件扩展名仍然是.CSV) 我试图弄清楚如何编写一个程序来读取所有的数据,并在'src'字段中输出重复值的数量。 例如,在我的例子中,输出看起来像'123123:出现2次' 我已经尝试了几个解决scheme,最值得注意的是: 如果每行都包含不同数量的字段(数字相当大),如何正确读取CSV文件? 我写了一个循环来将'drc'中的'src'拆分成'newData'作为.CSV文件 //go through each line and split + link the data to src/dst data.forEach(function (line) { newData = line.split('|'); //note, split returns an array let src = newData[0]; //src from data.csv let […]

在社交networking上存储文件的最佳方式

我使用Mongo database , PHP , Nodes.js和保存文件有问题。 因为:文件大小可能超过1PB(1000 TB)。 在我看来有两种方法可以做到这一点: 将文件保存在服务器上(jpg,mp3,mp4,…) 保存Mongo数据库上的文件(位,…) 女巫更好? 如果您有其他解决scheme,请让我知道这一点。

喜欢在mongoDB

在这里我的问题:我想创build一个networking,允许用户上传post和喜欢他们。 我想我可以将每篇文章存储在一个名为“post”的集合中,而且我没有这个问题。 但我在哪里可以存储每个post与相关数据(时间,用户等)喜欢? 我不能这样做后文件,因为一个文件的最大大小是16MB,想象我将不得不logging每个post相关数据的数千喜欢我不能这样做。 我可以将每个post关联到一个集合,其中包括文档和每个文档是相似的。 但是,如果可能的话,我真的不想创造数百万和数百万的collections。 post文档示例: {_id: blabla, userfrom: {}, txt: "i am the post", time: {}, geo: {}, likes: {here i have to add as many likes as users clicks, and it can exceed 16MB}} 现在在'喜欢'我可以把一个集合的参考,但这是我不想做的。 我读了MongoDB的gridstore,但是我没有明白。 我可以使用它作为大小可以趋于无限的文件? 所以我可以添加尽可能多的logging,我想要的? 所以与网格商店我可以做一些事情: {_id: blabla, userfrom: {}, txt: "i am the post", time: {}, geo: {}, […]

什么是pipe理node.js的堆大小的最佳解决scheme

我们将分析Twitter数据,因此我们将使用节点,但是我们面临的问题是旧版本的v8 chrome engine没有提供超过1.9 gb堆大小(64位)(我们的同事对亚马逊数据进行了分析他们面临这个问题,他们克服了这个问题,使用分布式计算,但这不是一个好的解决scheme)。 现在正式给我们多less堆大小的64位V8铬引擎。 什么是最好的解决scheme? 我们一直在网上search大量的文章和解决scheme。 io.js适合这样的任务吗?

最好/更好的方式来处理(过滤)BIG CSV文件?

我有很多GB的价值每个在〜3-4GB的未压缩CSV文件的数据。 我创build了一个stream函数,它扫描每个csv文件中某个列的值,如果是真的,则将其保存到单个输出文件(由每个input函数共享)。 我所看到的是,将它设置为通过26个文件(一年52个星期/一个季节2个)一次大约需要8-9000秒(约346秒一个文件)。 而当我运行一个单一的文件,我得到<200秒。 我在哪里创造70%的开销? 我的代码希望是不相关的,但是对于冗长:我正在使用名为“byline”的库来stream式传输文件。 很确定我的过滤是不理想的(特别是后来支持多个filter),但我目前只运行1个filter,应该是性能中立。 var fs = require('fs'); var byline = require('byline'); function readSkuData(afilename,col,value) { var stream = fs.createReadStream(afilename); stream = byline.createStream(stream); filters.push([col,value]); stream.on('data',function(line) { loaded = loaded + line.length; lineinfo = line.toString().split(","); if (!(lineFiltered(lineinfo,filters))) { filteredsize = filteredsize + 1; fs.appendFile('filteredData.csv',"\n" + line, function (err) { if (err) throw err;}); } […]

高内存/性能关键计算 – 架构方法观点

我需要一个架构观点和方法来解决以下问题: 介绍: 我们有一个~4M行的表称为Purchases 。 我们也有一个~5k行的表,称为Categories 。 另外,我们有一个~4k SubCategories的表。 我们正在使用T-SQL来存储数据。 在用户请求(在运行期间),服务器接收到大约10-15个可能参数的请求。 根据参数,我们采购,按类别和子类别进行分类,并进行一些计算。 “计算”的一些过程包括过滤,分类,重新安排采购领域,相互减less采购,增加一些其他采购,find储蓄等等。 这个过程是用户特定的,因此每个用户将根据他们的angular色获得不同的数据。 问题: 这个过程大约需要3-5分钟,我们希望把它裁掉。 以前,这个过程是通过webworkers(JS)在浏览器中完成的。 随着内存开始变大,大多数浏览器开始加载失败,我们已经离开了它。 然后,我们将服务移动到服务器(NodeJS),通过subprocess即时处理请求。 subprocess的原因:计算进程经过for循环大约5000倍(对于每个类别)并执行上述“计算”。 通过subprocess,我们能够将工作分配到#ofsubprocess中,如果我们运行了至less16个内核(16个subprocess),则可以获得更好的结果。 目前的处理时间下降到大约1.5-2分钟,但我们想看看我们是否有更好的select。 我明白它很难完全理解我们的目标,而没有看到任何代码,而是专门提出问题。 在运行时对半大数据进行计算的方法有哪些? 我们有一些想法: 使用SQL内存表,并在SQL中进行计算 使用azure色批处理服务 使用更大的机器(〜32-64内核,如果我们不能得到任何其他的想法,这可能是我们最好的select,但是当然,成本增加了很多,但是我们接受成本会增加的事实) 步入hadoop生态系统(或其他大数据生态系统) 其他一些有用的事实: 我们的购买量约为1GB (对于内存计算来说有点过大) 我们正在考虑在redis上进行预计算和caching,以便为客户端准备好一些数据(我们将使用他们的帐户中的参数设置每天预先计算,但客户端往往会频繁更改这些参数,因此我们有有一些有效的方式来处理未caching和预先计算的数据) 如果我们可以提供更多的信息来更好地理解我们的困境,请发表评论,我将尽可能提供更多的信息。 如果可能的话,将会有太多的代码粘贴到这里来完全理解algorithm,因此我想尝试用单词来提供我们的问题。

在写入到nodejs中的文件之前对数据stream进行sorting

我有一个input文件,可能包含高达1M的logging,每个logging看起来像这样 field 1 field 2 field3 \n 我想读取这个input文件,并在写入到另一个文件之前,根据field3进行sorting。 这是我到目前为止 var fs = require('fs'), readline = require('readline'), stream = require('stream'); var start = Date.now(); var outstream = new stream; outstream.readable = true; outstream.writable = true; var rl = readline.createInterface({ input: fs.createReadStream('cross.txt'), output: outstream, terminal: false }); rl.on('line', function(line) { //var tmp = line.split("\t").reverse().join('\t') + '\n'; //fs.appendFileSync("op_rev.txt", […]

如何使用node.js http服务器从mongodb返回大量的行?

我在MongoDB中有一个用户数据库,我想通过JSON中的REST接口导出。 问题是在最坏的情况下,返回的行数已经超过200万。 首先我试过这个 var mongo = require('mongodb'), Server = mongo.Server, Db = mongo.Db; var server = new Server('localhost', 27017, {auto_reconnect: true}); var db = new Db('tracking', server); var http = require('http'); http.createServer(function (request, response) { db.collection('users', function(err, collection) { collection.find({}, function(err, cursor){ cursor.toArray(function(err, items) { output = '{"users" : ' + JSON.stringify(items) + '}'; response.setHeader("Content-Type", […]