2016-06-17 8 views
-4

ヘッダーがすべてそうです。このファイルには、およそ数ヶ月分のデータが含まれています。私はすべてのものを読んで記憶に記憶するのが賢明ではないと思ったので、バッチでこれをはるかに速くすると聞いた。しかし、私は以前に試したことがないし、始める方法がわからない。Javaを使用してバッチで非常に大きなcsvファイル(30GB以上)を読む方法

ファイルには数か月分のデータが含まれており、UNIXの日付が含まれています。私の仕事は、その行を数えて別々の月に分けることです。その後、レコードの数が最も多い月には狭くなり、その月からさらに狭くなってレコードの数が最も多く、さらに時間がさらに狭くなります。

どのようにすればいいですか?

+1

ようこそStackOverflow。 [help]にアクセスして[ask]を読んでください。問題を解決するために努力することが期待されています。理解できないものに遭遇した場合は、特定の質問をします。 StackOverflowは、チュートリアル、ディスカッション、または他の人があなたのためにコードを書いているのではありません。あなたが取るべきアプローチは、一度に1行ずつファイルを処理し、必要な情報だけを抽出/集約することです。あなたがする必要があるのは、ほとんどのレコードがある月/日/時であることが分かっていれば、これは地図データ構造で行うことができます。 –

+0

何回か質問する必要がある場合は、JimGarrisonまたはgeorge-polioveiの方法を試してみてください。何度もクエリを行う必要がある場合は、まずソートしてみてください(https://en.wikipedia.org/wiki/External_sorting) – waltersu

答えて

0

私は

0

管理しやすい部分でファイルを分割し、ソートを実行すると、(ソート外部に)ソートマージ別のファイルに特定のパターンに一致するラインを使用すると、行毎にファイルを読むべきだと思う、と正規表現の抽出物を使用しました。

さらに、ロガーを分割してレコードを分割してください。たとえば、前のログを閉じて、毎日または1時間ごとに新しいログを開きます。ログを頻繁に分析する場合は、SQLデータベースの使用を検討してください。

関連する問題