【发布时间】:2020-12-22 02:27:13
【问题描述】:
我们有 500GB 的文件,其中包含整数行。 我们如何使用 Node.js 仅使用 512Mb RAM 对其进行排序? 我认为是这样的:
- 将块上的主文件拆分为 256Mb
- 对每个块进行排序
- 获取每个块的第一行,排序并推送到最终文件
- 对块中的每一行执行第 3 步。
一些想法?
更新: 感谢用户some-random-it-boy 该解决方案基于具有本机排序实用程序的子进程。 我认为它应该有效)
var fs = require('fs'),
spawn = require('child_process').spawn,
sort = spawn('sort', ['in.txt']);
var writer = fs.createWriteStream('out.txt');
sort.stdout.on('data', function (data) {
writer.write(data)
});
sort.on('exit', function (code) {
if (code) console.log(code); //if some error
writer.end();
});
【问题讨论】:
-
您是否尝试过您首先描述的任何事情? Stack Overflow 更擅长解决特定的编程问题,而不是大型目标/项目。
-
流不是节点的定义特征之一吗?你可以看看
createReadStream和createWriteStream -
@Sheraff 现在我正在使用
fs.openSync、fs.readSync和fs.writeSync,但无法理解这样做的算法
标签: javascript node.js sorting fs