2 votes

Chargement d'un fichier JSON extrêmement volumineux sans connaître le schéma ?

J'essaie de charger un très gros fichier JSON en Python. J'ai essayé :

import json
data = open('file.json').read()
loaded = json.loads(data)

mais cela me donne une erreur SIGKILL.

J'ai essayé :

import pandas as pd
df = pd.read_json('file.json')

et j'obtiens une erreur de mémoire insuffisante.

J'aimerais essayer d'utiliser ijson pour diffuser mes données et n'en extraire qu'un sous-ensemble à la fois. Cependant, vous devez connaître le schéma du fichier JSON afin de savoir quels événements rechercher. Je ne sais pas vraiment quel est le schéma de mon fichier JSON. J'ai donc deux questions :

  1. Existe-t-il un moyen de charger ou de diffuser un gros fichier json en Python sans connaître le schéma ? Ou un moyen de convertir un fichier JSON dans un autre format (ou dans un serveur postgresql, par exemple) ?

  2. Existe-t-il un outil permettant d'extraire le schéma de mon fichier JSON ?

UPDATE :

Utilisé head file.json pour avoir une idée de ce à quoi ressemble mon fichier JSON. À partir de là, c'est un peu plus facile.

0voto

V. BRICE Points 13

Je traiterais les petits morceaux du dossier. Jetez un coup d'œil à Méthode paresseuse pour lire un gros fichier en Python ? . Vous pouvez adapter la réponse proposée pour analyser votre JSON objet par objet.

-1voto

Vous pouvez lire par morceaux, comme ceci

f=open("file.json")
while True:
    data = f.read(1024)
    if not data:
        break
    yield data

L données = [] avec open('file') comme f : for line in f : data.append(json.loads(line))

Regardez également https://www.dataquest.io/blog/python-json-tutorial/

Cherchez d'autres réponses avec jsonline

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X