2017-02-19 4 views
1

非常に大きなJSONファイルをPythonで読み込もうとしています。私は試しました:スキーマを知らずに非常に大きなJSONファイルをロードしていますか?

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

しかし、それは私にSIGKILLエラーを与えます。

私が試してみた:

import pandas as pd 
df = pd.read_json('file.json') 
を、私はメモリ不足のエラーが発生します。

ijsonを使用してデータをストリーミングし、サブセットを一度に取り出すことを試みたいと思います。ただし、JSONファイルのスキーマがどのようなイベントであるかを知る必要があります。実際にJSONファイルのスキーマがわからない。だから、私は2つの質問がある:

  1. は、スキーマを知らなくてもPythonで大きなJSONファイルを読み込むか、ストリームする方法はありますか? JSONファイルを別の形式に変換する方法(または、たとえばpostgresqlサーバーに変換する方法)

  2. 私のJSONファイルのスキーマを吐くためのツールがありますか?

UPDATE:

は私のJSONファイルがどのように見えるかのアイデアを得るためにhead file.jsonを使用します。そこから少し楽です。

+0

jsonファイルのサンプルを投稿できますか? –

答えて

0

私はファイルの小さな部分を扱います。 Lazy Method for Reading Big File in Python?をご覧ください。提案された答えをJSONオブジェクトをオブジェクト別に解析するために適応することができます。

-1

あなたはチャンクで読み取ることができ、ラインオプション データ= [] Fとしてオープン( 'ファイル')との することにより、この

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

ラインのようなもの: Fの行のため: data.append (json.loads(ライン))

はまたjsonline

0123でより多くの答えを https://www.dataquest.io/blog/python-json-tutorial/

ルックを見て

+0

この方法は機能しません。 'json.loads'や' pandas.read_json'を使ってjsonファイルのチャンクを読み込もうとすると、jsonオブジェクトでないか、パンダの場合にはエラーとなります。それは 'ValueError:Trailingデータ ' – user1566200

+0

jsonlineでf: を取得してください。json.loads(jsonline) –

+0

私は 'yield outside function'を取得しました – user1566200

関連する問題