初めて質問いたしますので不備があるかもしれませんがよろしくお願いいたします。では、早速ですが、
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は、ほとんど初心者といって良いほどの知識ですので
なにとぞよろしくお願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
データの集計が主目的だったら、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など)
――あたりを学べばよいかと。
この回答への補足
osamuyさん、回答ありがとうございます。
用件がJavaでということなのでJavaで実装を考えております。
ちなみに動作環境のOSはSolarisとなります。
ArrayListやHashMapを使用し、算出すると思うのですが、
データ量が多いため、ArrayListにデータが入らず、
ヒープサイズエラーとなったので、
読み込みながら判断して、集計分だけ抽出(ArrayList保管)みたいな・・・
都合の良いことが出来ないものかと思案しておりました。
順番どおりデータが並んでいないのがまたやっかいなんです・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Excel(エクセル) 非表示にしたい行をグループ化して折り畳み 4 2022/09/17 20:17
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Excel(エクセル) アウトラインの小計のやり方 1 2023/03/20 11:51
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Excel(エクセル) Excel使用前提 同じフォルダ内にあるファイルの集約等をマクロでできますか 4 2022/09/06 19:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ピボットテーブルの項目間の計算
-
エクセルで○や×の図形の集計は...
-
エクセルの集計を数字以外です...
-
オートシェイプを色別に個数を...
-
エクセルのピポットテーブルで...
-
ピボットテーブルへの集計フィ...
-
ピボットテーブルのことです
-
勤務表の中抜け集計の関数を教...
-
パソコンで回答できる穴埋め問...
-
ピボット 集計アイテム
-
エクセルを使ってCSVデータを自...
-
ピボットテーブルの集計値をVBA...
-
EXCELで大文字と小文字を...
-
Excel週ごとの集計を関数で
-
エクセルの集計機能を横方向(...
-
マクロで貼り付け位置を可変さ...
-
エクセル ピボットテーブルを更...
-
グラフの横・縦項目が全部表示...
-
エクセルの散布図のX軸に文字...
-
エクセルの対数グラフで細かい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ピボットテーブルのことです
-
エクセルのピポットテーブルで...
-
ピボットテーブルの項目間の計算
-
マクロで貼り付け位置を可変さ...
-
エクセルの集計を数字以外です...
-
エクセルで○や×の図形の集計は...
-
オートシェイプを色別に個数を...
-
IF関数を使用した数字に、カン...
-
Microsoft Formsによるアンケー...
-
エクセルの集計機能を横方向(...
-
勤務表の中抜け集計の関数を教...
-
エクセルで数値のプラス毎とマ...
-
保存ブックを開かずコピーペー...
-
ピボットテーブルの集計値をVBA...
-
ピボットを使ったシートに計算...
-
ピボットテーブルへの集計フィ...
-
価格帯別集計 EXCELで効率の良...
-
エクセル 小計後に別シートにデ...
-
セルの中の文字を削除したい
-
エクセルを使ってCSVデータを自...
おすすめ情報