3亿(int)数据-2亿(int)数据 求差集

两个大文本,每行一条int数据

3亿(int)数据-2亿(int)数据 求差集

原始(粗暴)办法

1redis set 或类似方案
本地内存 cpu都撑不住

2持久化两张表 sql join
mysql join是两层暴力for的性能太差,还是单线程的
sqlserver 三种join方式,1两层for,2有序列优化join,3 hash join,该场景可用有序列进行join(int型数 hash join没啥意义),性能远胜两层暴力for,另外sqlserver多线程计算优化
orcal 和sqlserver类似 细节或有区别,不是很熟悉,反正比mysql强

3 sql insert文本1,遍历文本2 update 再select


sqlserver 本机mac需要 https://hub.docker.com/r/microsoft/mssql-server-linux

4hadoop map/reduce 本身自带sort,说到底和sqlserver join原理差不多,同时用到了多机,多进程/线程

4linux命令 grep sort 之类

5bitmap

直接用redis 作位运算 代码都不用写多少

大量int型数据,交差并都都优先考虑bitmap

 

用redis的 bit 有位数限制

offset 参数必须大于或等于 0 ,小于 2^32 (bit 映射被限制在 512 MB 之内)。

单key放不下,就多用几个

redis [key] = val/(2^32)  

[key] [offset] = val%(2^32) 

setbit [key] [offset] 1

posted @ 2017-08-10 11:09  cclient  阅读(448)  评论(0编辑  收藏  举报