締切済み

Javaでファイル読み込みをして、集計したいです。

  • すぐに回答を!
  • 質問No.4170664
  • 閲覧数533
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (4/4)

初めて質問いたしますので不備があるかもしれませんがよろしくお願いいたします。では、早速ですが、
Javaで以下のようなカンマ区切りのデータの
テキストファイルを読み込み
------------------------------------
1,0,0,20080101101000,A,Z,11
2,0,0,20080101101000,A,Z,12
3,0,0,20080101102000,B,Z,13
4,0,0,20080101105000,C,Z,17
7,0,0,20080101103000,B,Z,14
8,0,0,20080101104000,Z,Z,14
9,0,0,20080101106000,X,Z,16
------------------------------------
4番目、5番目の値で抽出した
下記のような集計結果を得たいです。
20080101101000,A が2件
20080101102000,B が1件
20080101103000,B が1件
・・・
データが数百万件となるので効率よく、メモリを圧迫しないように
処理したいのですが、良い方法がありますでしょうか?
Javaは、ほとんど初心者といって良いほどの知識ですので
なにとぞよろしくお願いいたします。

回答 (全1件)

  • 回答No.1

ベストアンサー率 42% (1231/2878)

データの集計が主目的だったら、Javaでなく、PerlやRubyなどの手軽なスクリプト系にしては。
たとえば、perlで書くとこんな感じ:

<a.txt perl -MData::Dumper -F, -ane "$a{$F[3].','.$F[5]}++;END{ print Dumper(\%a)}"

結果は以下:
$VAR1 = {
'200801010000,N' => '160840',
'200801010000,O' => '161383',
'200801010000,P' => '161520',
以下略。
400万件のテキストを読みこませたら、1分くらいで処理します(動作クロック2GHzくらいのパソコン、OSはVistaでの結果)。
メモリ使用量も100MB程度なので、1GBくらいメモリを載せていれば十分処理できます。

UNIX系OSを使っているか、あるいはWindowsにcygwinやSubsystem for UNIX Applicationなどをセットアップしているなら以下のコマンドでもOK:

<a.txt cut -d , -f 4,6 | sort | uniq -c

これだと3分くらい(VistaのSUAで実行)。
MS Accessなどのデータベースに登録してから、クエリで集計するという手もあります。

主目的がJavaプログラミングというのだったら、
・ファイル入出力
・文字列演算
・コレクション操作(Hashtableなど)
――あたりを学べばよいかと。
補足コメント
kazxxx

お礼率 100% (4/4)

osamuyさん、回答ありがとうございます。

用件がJavaでということなのでJavaで実装を考えております。
ちなみに動作環境のOSはSolarisとなります。
ArrayListやHashMapを使用し、算出すると思うのですが、
データ量が多いため、ArrayListにデータが入らず、
ヒープサイズエラーとなったので、
読み込みながら判断して、集計分だけ抽出(ArrayList保管)みたいな・・・
都合の良いことが出来ないものかと思案しておりました。
順番どおりデータが並んでいないのがまたやっかいなんです・・・。
投稿日時 - 2008-07-12 15:17:04
お礼コメント
kazxxx

お礼率 100% (4/4)

回答ありがとうございました。
投稿日時 - 2008-07-12 15:25:28
Be MORE 7・12 OK-チップでイイコトはじまる
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ