两个大文本,每行一条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