2016-12-09 2 views
0

私は巨大なログファイル〜4GBを持っています。私はログファイルを1行ずつ解析する必要があります。それぞれの行について、データベースを照会し、別のcsvファイルに接続し、さまざまなソースからデータを結合します。 実行時間は2日近くです。しかし、残念ながら、クエリ中にMySQLサーバへの接続が失われたような理由で、これまでの解析をすべて失ってしまい、何度も何度もスクリプトを実行する必要がありました。それから、最後の1週間、私はこのスクリプトを何度か実行しました。以前のすべての解析を失いました。スクリプトは最終結果をcsvファイルに書き込まなければなりませんでした。私はこの問題を回避するための解決策を探していますが、私は何ができますか? プロセスの最後の状態をどこかで保持する方法はありますか?毎回最初から実行するのではなく、プロセスの最後の点から再実行しますか?またはこの中断を回避できるその他のソリューションPython dbの接続が途中で途絶えて、巨大なログファイルを解析しています

+3

私の考え:一度に完全なデータベースを読み込まないで、一度に50を取ってください。 – Xevaquor

+0

どのようにすればいいですか?各行でユーザー名を抽出し、dbにクエリしてユーザー情報を抽出します。あなたはユーザー名のリストを保存してから、50人のユーザー名をクエリするのですか? –

+0

申し訳ありませんが、誤解された質問(私はあなたがDBから読んでいることを忘れないで保存する)。しかし、最後に処理された行番号を覚えていれば助かりますか?この番号をファイルに保存して、その行からクラッシュを再開することができますか? CSVファイルの場合、n行をスキップするのは簡単です – Xevaquor

答えて

0

上記の問題を解決するには上記のディスカッション私はデータベースに一度問い合わせ、私は辞書として保持し、次にキーを辞書に入れます。それは時間の実行をスピードアップしますが、接続が失われても処理にはもう影響しません。時間の実行が20分に短縮されたことに言及したいと思います。それは信じられないです!!辞書のおかげで...

関連する問題