【发布时间】:2013-08-05 03:17:26
【问题描述】:
我正在为我遇到的问题寻找最佳解决方案 (-:
我有 k 个 csv 文件(例如 5 个 csv 文件),每个文件都有 m 个字段,这些字段产生一个键 和 n 值。我需要生成一个包含聚合数据的单个 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
到目前为止我们认为的算法:
散列(使用 concurentHashTable)
合并排序文件
数据库:使用 mysql 或 hadoop。
解决方案需要能够处理海量数据(每个文件超过两百万行)
一个更好的例子:文件 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 列
【问题讨论】:
-
有一些工具可以做到这一点。我玩了一点“水壶”,它可能会很有趣。
-
请更新您的问题以包括您如何唯一标识一行(您如何知道何时可以“合并”两行),以及您如何合并这样一行(显然添加了一些的值)。我相信我看到了你的做法,但你不希望我或任何人做出错误的假设。
-
@RichardSitze 嗨,理查德,谢谢(-:. 我已经更新了问题
-
我对@987654321@ 的回复是否暗示了一种可行的哈希机制?
-
@RichardSitze 感谢您的回复。您的答案更多的是实施细节。我不是在寻找一个,我只是想弄清楚在运行时、内存消耗和数据完整性方面我的最佳方法是什么。
标签: java sql olap bigdata concurrent-programming