2015-12-26 2 views
6

Folgendes stürzt meinen Julia-Kernel ab. Gibt es eine bessere Möglichkeit zum Lesen und Parsen einer großen (> 400 MB) JSON-Datei?Lesen und analysieren Sie eine> 400MB .json-Datei in Julia ohne Absturz des Kernels

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

Verwenden Sie einen Pull-Parser (im Gegensatz zu Push-Parser). Analysiere es nicht nur, sondern bearbeite es sofort, du willst die ganze> 400M JSON Datei nicht im Speicher haben. –

Antwort

2

Es sei denn, einige Mühe in die Herstellung einer intelligenteren JSON-Parser investiert wird, kann folgende Arbeiten: Es gibt eine gute Chance file.json viele Linien. In diesem Fall könnte das Lesen der Datei und das syntaktische Parsen eines großen sich wiederholenden JSON-Abschnitts Zeile für Zeile oder Stück für Stück (für die rechte Stücklänge) den Trick bewirken. Eine Möglichkeit, dies zu codieren, wäre:

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 

Es gibt eine gute Chance, das ist eine vorübergehende Notlösung für Ihr Problem sein könnte. Überprüfen Sie file.json, um herauszufinden.

Verwandte Themen