Cosa è più efficiente: leggere e analizzare un file JSON di grandi dimensioni o un file CSV di grandi dimensioni?

0

Ho intenzione di utilizzare Scrapy per eseguire la scansione di un sito Web locale per molti dati e archiviarlo in un file. Quindi ho intenzione di analizzare quel file e inserire alcuni dati in un database SQL.

Il mio computer userà meno CPU e RAM per leggere e analizzare un grande file CSV o file JSON?

O forse avrebbe più senso memorizzare i dati in un mucchio di file CSV o JSON più piccoli?

In entrambi i casi, che è meno oneroso sulla mia macchina?

    
posta Username 25.03.2018 - 21:29
fonte

2 risposte

1

L'analisi di un file JSON è più complessa di un file CSV.

In JSON devi affrontare {}, [], ":", "," e una complessità extra con nidificazione. In CSV gestisci solo interruzioni di linea e separatori di colonne.

A causa della semplicità di CSV, puoi eseguire la lettura di chunkwise (streaming) molto più facilmente, quindi se la dimensione del tuo file sarà maggiore di alcuni concerti (come > 4gb), la logica di lettura sarà molto più semplice ed efficiente per CSV. In tal caso sarai obbligato a leggere il chunk-wise perché non sarai in grado di caricare l'intero file nella RAM ...

Quindi, in generale, direi: vai con CSV.

    
risposta data 25.03.2018 - 22:45
fonte
-1

Che dilemma!

  • Da un lato il CSV non è mai buono.

  • Dall'altro, un formato di file flat sarà sempre "più economico" di uno nidificato.

JSON ha almeno una specifica, anche se ha problemi con elementi di base come i numeri.

Penso che la risposta corretta sia che se la tua struttura dati è semplice e ben definita, puoi probabilmente creare un parser in stile csv super-sottile che è più performante di un JSON standard. .

Il minuto in cui i tuoi dati diventano complessi, cioè caratteri di escape, delimitatori di secondo livello, righe di intestazione, dati lunghi in colonne ecc. È discutibile se questa struttura 'csv estesa' sia meno complessa e quindi più veloce da analizzare di una formato come JSON o XML.

Riguardo alle maggiori domande sollevate dal tuo post.

  • Scrivere file di qualsiasi tipo non è mai 'veloce',
  • Dovresti parlare di gigabyte di dati prima di notare una differenza
  • Scrivere parser a questo livello è probabilmente più complesso che raschiare i dati. Basta testarne alcuni fuori dallo scaffale e scegliere il più veloce
  • I database sono progettati specificamente per questo tipo di cose. Usali!
risposta data 25.03.2018 - 23:58
fonte

Leggi altre domande sui tag