问题描述
- 请教一个关于海量数据的大文件统计问题
-
有一个大文件 20多G 里面一行一行的(csv格式,逗号隔开的那种)都是订单信息 主要的有用户id 商户id 还有就是订单id 需要求出的就是求出“每个商户”“每天的累计支付用户”和“每天的新增支付用户数”
PS:
最好能贴出代码,
最好可以用C或C++,php也ok,
还有就是内存不是很大 需要考虑内存原因
我需要求出的“累计支付用户”和“新增支付用户数”的uid是需要去除重复的
解决方案
如果windows平台,用内存映射最快,当然用随机读取也行。
linux平台,用随机读取文件统计吧
解决方案二:
可以参考一下 http://blog.csdn.net/zhxue123/article/details/5114525
解决方案三:
建议以天为单位建议索引, 这样访问的数据量就不会太大
解决方案四:
用fgets,每读取一行就统计
解决方案五:
将大文件按行读取根据关键信息拆分成小文件文件,比如每天一个文件,(每个用户id+商户一个文件)(用户id+商户+每天一个文件) 拆成内存一次性能处理就行, 然后在处理小文件
解决方案六:
我这有一个类,你一点一点读,改一改估计就行:
http://blog.csdn.net/wangyaninglm/article/details/42682937
解决方案七:
处理大文件还是考虑是用内存文件映射的方式吧,分块处理
解决方案八:
有考虑用hadoop或者spark这些吗?如果这种20G的文件分析操作经常发生的话
解决方案九:
有考虑用hadoop或者spark这些吗?如果这种20G的文件分析操作经常发生的话
解决方案十:
按行读取文件,一行行读取处理
fgets()
时间: 2024-11-03 21:06:41