gpt4 book ai didi

node.js - 如何打破大型csv文件,在多核上处理它并使用nodeJs将结果合并为一个

转载 作者:行者123 更新时间:2023-12-03 12:15:00 30 4
gpt4 key购买 nike

我有非常大的 csv 文件(370GB)。我有足够的 RAM(64 GB)在 Windows 10 上运行。

我认为以下是在我的系统上处理数据的最佳方式,但我不确定如何实现它。

  • 我想把它分成 4 个不同的 csv 文件(因为我有四核系统)。
  • 然后处理不同核心上的每个文件(使用集群)。
  • 处理后的结果应合二为一。

  • 目前我正在使用以下代码来获取和处理数据:
    var fs = require('fs'), 
    util = require('util'),
    stream = require('stream'),
    es = require('event-stream'),
    path = require("path");
    var dir = path.join(__dirname,'./ttwe.csv');


    var lineNr = 0;

    var s = fs.createReadStream('AIR_Pre_Processed_Data_For_EDA_16th_June_2016.csv')
    .pipe(es.split())
    .pipe(es.mapSync(function(line){

    // find /v /c "" AIR_Pre_Processed_Data_For_EDA_16th_June_2016.csv (command to get totel no of line which gives 37931757)
    s.pause();

    lineNr += 1;
    let ttp=line.split("^")[1].replace(/_," ");
    if(ttp !='NA' && ttp !='undefined' && ttp !=''){
    fs.appendFile(dir,ttp+",\n");
    }
    process.stdout.write('\u001B[2J\u001B[0;0f');
    console.log(lineNr," of 37931757 Lines: ",parseInt((lineNr/37931757)*100),"%");

    s.resume();
    })
    .on('error', function(e){
    console.log('Error while reading file.',e);
    })
    .on('end', function(){
    console.log('Read entire file.')
    })
    );

    最佳答案

    有一个包可以将这个巨大的文件拆分成更小的文件:csi-split-stream .
    您可以在每个文件上定义最大块,然后分别处理它们。

    const csvSplitStream = require('csv-split-stream');


    return csvSplitStream.split(
    fs.createReadStream('input.csv'),
    {
    lineLimit: 100
    },
    (index) => fs.createWriteStream(`output-${index}.csv`)
    )
    .then(csvSplitResponse => {
    console.log('csvSplitStream succeeded.', csvSplitResponse);
    // outputs: {
    // "totalChunks": 350,
    // "options": {
    // "delimiter": "\n",
    // "lineLimit": "10000"
    // }
    // }
    }).catch(csvSplitError => {
    console.log('csvSplitStream failed!', csvSplitError);
    });
    got it here

    关于node.js - 如何打破大型csv文件,在多核上处理它并使用nodeJs将结果合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37944555/

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