Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

88
Views
Procesar archivo JSON de 10 GB en Node JS

Tengo un archivo json y la estructura de ese archivo es la siguiente:

 { "orders":[ { "id": 876876876, "app_id":580714, "client_details": {}, "discount_codes": [{}], "line_items": [ { "id": 466157049, ... } ], ...... }, { "id": 47844583, "app_id":580714, "client_details": {}, "discount_codes": [{}], "line_items": [ { "id": 466157049, ... }], .... }, {...}, {...}, {...} ] }

Esta matriz puede contener más de 10 lakhs (1 millón) de objetos. Actualmente necesito:

  • encontrar el objeto con ID de pedido
  • Número total de pedidos
  • obtener pedidos con ID de pedido y con el número de límite

Estoy usando el siguiente código:

 return new Promise((resolve, reject) => { var orders = [] var getStream = function () { var stream = fs.createReadStream(file_path, { encoding: 'utf8' }), parser = JSONStream.parse('*'); return stream.pipe(parser); }; getStream() .pipe(es.mapSync(function (data) { orders = data })) .on('end', function() { resolve(orders) }) })

Pero hace que el sistema se cuelgue. Además, también he usado el siguiente comando:

 node --max-old-space-size=8192 index.js

Pero eso tampoco funcionó. ¿Alguien puede ayudarme a procesar un archivo json tan grande?

Editado : ahora el tamaño del archivo es de 850 MB y estoy usando el siguiente código:

 return new Promise((resolve, reject) => { var data = '' var reader_stream = fs.createReadStream(file_path) reader_stream.setEncoding('UTF8') reader_stream.on('data', function(chunk) { data += chunk }) reader_stream.on('end',function() { try{ const orders_result = JSON.parse(data) var order_count = (orders_result.orders) resolve({ "count": order_count.length }) } catch(err) { console.log(err) } }) reader_stream.on('error', function(err) { console.log(err.stack) reject(err.stack) }) })

y obteniendo el siguiente error

Excepción no detectada: RangeError: longitud de cadena no válida

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

JSON.parse necesita leer todo el archivo en la memoria, incluidas las partes que su aplicación no necesita. Un enfoque sería usar un analizador tipo SAX como clarinete . Estos analizadores no leen todo el archivo en la memoria, generan eventos durante el proceso de análisis. Debe manejar estos eventos para verificar si los datos son de interés y solo almacenar la información que realmente necesita.

Esto reducirá la cantidad de memoria requerida para el proceso de análisis, pero no es tan conveniente. Parece que su operación no necesita todos los datos, por lo que tal vez tenga suerte y una versión simplificada pueda caber en la memoria.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!