2015-12-26 2 views
6

Quanto segue causa il blocco del mio kernel Julia. C'è un modo migliore per leggere e analizzare un file JSON di grandi dimensioni (> 400 MB)?Lettura e analisi di un file .json da 400 MB in Julia senza crash del kernel

using JSON 
data = JSON.parsefile("file.json") 
+0

Utilizzare un parser di pull (al contrario di premere parser). Non solo lo analizza ma lo elabora immediatamente, non vuoi che l'intero file> 400M JSON sia in memoria. –

risposta

2

A meno che qualche sforzo è investito a fare un intelligente JSON parser, il seguente potrebbe funzionare: C'è una buona probabilità file.json ha molte linee. In questo caso, leggere il file e analizzare una grande sezione ripetitiva JSON riga per riga o chunk-by-chuck (per la giusta lunghezza del chunk) potrebbe fare il trucco. Un modo possibile per codificare questo, sarebbe:

using JSON 
f = open("file.json","r") 

discard_lines = 12  # lines up to repetitive part 
important_chunks = 1000 # number of data items 
chunk_length = 2  # each data item has a 2-line JSON chunk 

for i=1:discard_lines 
    l = readline(f) 
end 
for i=1:important_chunks 
    chunk = join([readline(f) for j=1:chunk_length]) 
    push!(thedata,JSON.parse(chunk)) 
end 
close(f) 
# use thedata 

C'è una buona possibilità che questa potrebbe essere una soluzione temporanea per il problema. Esaminare file.json per scoprirlo.