Hierbei geht es nicht um das Lesen großer JSON-Dateien, sondern darum, eine große Anzahl von JSON-Dateien möglichst effizient zu lesen.Eine große Anzahl von JSON-Dateien in Python lesen?
Frage
ich mit last.fm-Datensatz aus dem Million song dataset arbeite. Die Daten sind als Satz von JSON-codierten Textdateien verfügbar, in denen die Schlüssel sind: track_id, artist, title, timestamp, similars und tags.
Zur Zeit sie in Pandas in der folgenden Art und Weise lese ich, nachdem sie durch ein paar Optionen gehen, wie dies die schnellste wie gezeigt here ist:
import os
import pandas as pd
try:
import ujson as json
except ImportError:
try:
import simplejson as json
except ImportError:
import json
# Path to the dataset
path = "../lastfm_train/"
# Getting list of all json files in dataset
all_files = [os.path.join(root,file) for root, dirs, files in os.walk(path) for file in files if file.endswith('.json')]
data_list=[json.load(open(file)) for file in all_files]
df = pd.DataFrame(data_list, columns=['similars', 'track_id'])
df.set_index('track_id', inplace=True)
Die aktuelle Methode liest die Teilmenge (1% des gesamten Datensatz in weniger als einer Sekunde). Das Lesen des ganzen Zuges ist jedoch zu langsam und dauert ewig (ich habe einige Stunden gewartet) und ist zu einem Flaschenhals für weitere Aufgaben geworden, wie sie in question here gezeigt werden.
Ich verwende auch ujson
für Geschwindigkeitszwecke in json Dateien Parsen, die offenbar gesehen werden kann von this question here
UPDATE 1 Generator Verständnis anstelle von Liste Verständnis.
data_list=(json.load(open(file)) for file in all_files)
Es klingt wie Sie nicht genug RAM haben, und es beginnt, SWAP zu verwenden, die einfachste Lösung wäre, mehr RAM zu bekommen. –
@FranciscoCouzo Einfachste vielleicht .. aber definitiv nicht das billigste! : D – dizzyf
Ich habe schon 16Gigs davon und ich denke das ist definitiv genug um einen normalen Datensatz wie diesen zu lesen. Gibt es eine bessere Möglichkeit, so viele JSON-Dateien zu lesen? – TJain