0

私が抱えている問題の最善の解決策を探しています (-:

k 個の csv ファイル (たとえば 5 個の csv ファイル) があり、各ファイルにはキーと n 値を生成する m フィールドがあります。集計データを含む 1 つの csv ファイルを作成する必要があります。例えば

file 1: f1,f2,f3,v1,v2,v3,v4
        a1,b1,c1,50,60,70,80
        a3,b2,c4,60,60,80,90 

file 2: f1,f2,f3,v1,v2,v3,v4
        a1,b1,c1,30,50,90,40
        a3,b2,c4,30,70,50,90

result: f1,f2,f3,v1,v2,v3,v4  
        a1,b1,c1,80,110,160,120
        a3,b2,c4,90,130,130,180

今まで考えていたアルゴリズム:

  1. ハッシュ (concurentHashTable を使用)

  2. ファイルの並べ替えをマージする

  3. DB: mysql または hadoop を使用。

ソリューションは、膨大な量のデータ (各ファイルが 200 万行を超える) を処理できる必要があります。

より良い例: ファイル 1

country,city,peopleNum
england,london,1000000
england,coventry,500000

ファイル 2:

country,city,peopleNum
england,london,500000
england,coventry,500000
england,manchester,500000

マージされたファイル:

country,city,peopleNum
england,london,1500000
england,coventry,1000000
england,manchester,500000

キーは次のとおりです。もちろん国、都市...これは単なる例です...私の実際のキーのサイズは6で、データ列のサイズは8です-合計14列

4

1 に答える 1

1

答えは人それぞれだと思います

1) 既製のソリューションが必要な場合は、splunk が最適です ( http://splunk-base.splunk.com/answers/6783/handling-large-amount-of-csv-files-as-input-and -rename-sourcetype-as-well-as-specify-header )

2) Hadoop のインフラストラクチャ / 帯域幅 / 開発期間がある場合は、ソリューションの作成に進みます

3) これが 1 回限りのジョブの場合は、マージ ソート ソリューションを作成します (sed / awk / sort を使用して bash で 2 TB のファイルを処理しました)。

4) 上記のいずれかが気に入らない場合のカスタム ソリューション。

于 2013-08-04T07:58:43.463 に答える