首页
注册
登录
ershierdu
V2EX 第 308348 号会员,加入于 2018-04-13 11:17:56 +08:00
ershierdu
提问
技术话题
好玩
工作信息
交易信息
城市相关
根据 ershierdu 的设置,主题列表被隐藏
二手交易
相关的信息,包括已关闭的交易,不会被隐藏
ershierdu 最近回复了
11 天前
回复了
kernelpanic
创建的主题
›
程序员
›
超过 1TB 的 csv 文件,有没有快速的处理方法
不了解最新的分布式架构,但感觉这也太符合 MapReduce 的思路了…
逻辑上:
1. 把文件扫一遍,得到 id->list[pair<content,sort>]的映射。
2. 单独为每个 id 的内容做内部排序。
实现上:
1.无论用什么方法,一轮文件 IO 把数据都进来都是需要的。为了后续处理更方便,再多加一轮 IO ,先把大文件按 1<id<10w, 10w+1<id<20w...切成多个小文件,这样每个小文件都是独立的,后续处理时维护的中间状态会少很多。
2. 每个小文件用一个进程处理,得到 id->list[pair<content,sort>]的中间结果。要么像楼上说的直接进数据库,要么每个 id 的内容放在一个文件里。一个小文件跑完后就可以从中间结果生成最终数据了。
并行度可以在切小文件的时候控制(每个小文件 10w 还是 100w 个 id )。
前提:
你存放最终结果的数据库需要能承受这么大的最终数据,否则啥办法都白搭。
54 天前
回复了
ttomatoo
创建的主题
›
问与答
›
C 盘焦虑症各位有吗? C 盘分多大合适?
@
wxgsorry
有价值的数据都在云端(甚至桌面我都在用坚果云同步)。否则,硬盘损坏/电脑丢失等情况造成数据丢失的可能性,会比 C 盘满了更能让我焦虑……
»
ershierdu 创建的更多回复
关于
·
帮助文档
·
博客
·
API
·
FAQ
·
我们的愿景
·
实用小工具
·
3497 人在线
最高记录 6543
·
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms ·
UTC 11:40
·
PVG 19:40
·
LAX 04:40
·
JFK 07:40
Developed with
CodeLauncher
♥ Do have faith in what you're doing.