Amazon EC2 マイクロ インスタンスで 12 時間ごとに cron ジョブを実行しています。118MB のファイルをダウンロードし、json ライブラリを使用して解析します。もちろん、これによりインスタンスのメモリが不足します。私のインスタンスには 416 MB の空きメモリがありますが、スクリプトを実行すると 6 MB に低下し、OS によって強制終了されます。
ここで私のオプションは何ですか?これを Ruby 経由で効率的に解析することは可能ですか、それとも C のような低レベルのものに落とし込む必要がありますか? より高性能な amazon インスタンスを入手できますが、Ruby 経由でこれを行うことが可能かどうかを本当に知りたいです。
更新: yajl を見てきました。解析時にjsonオブジェクトを提供できますが、問題は、JSONファイルにルートオブジェクトが1つしか含まれていない場合、すべてのファイルを解析する必要があることです. 私のJSONは次のようになります。
--Root
-Obj 1
-Obj 2
-Obj 3
だから私がするなら:
parser.parse(file) do |hash|
#do something here
end
ルート オブジェクトは 1 つしかないため、JSON 全体を解析します。Obj 1/2/3 がルートの場合、1 つずつ提供されるので機能しますが、私の JSON はそうではなく、解析して 500 MB のメモリを消費します...
更新 # 2: これは、118 MB の大きなファイル (7 MB) の縮小版です。
なくなった
解析可能です。ファイルから数バイトを削除しただけでなく、全体として見ることができます。私が探している配列はこれです
events = json['resultsPage']['results']['event']
ありがとう