海量数据处理
海量数据处理,思路有hash、bitmap、merge、堆、Top K(BFPRT算法)、trie树、布隆过滤器。 hash:对很多数据进行hash,然后取余一个正整数n,可以分成n份不同的数据组,每份数据组中数据通过hash算法得到相同的下标,所以相同的数据一定会分在同一数据组中。 bitmap:为操作,如果为每个数据分配n个bit,那么每个数据可最多有2^n种情况,在很多数据的情况下,bitmap总长可设为很大并间隔n位分给一格数据。 merge:一个很大数据量数据排序,分成不同数据组,每组内进行排序,不同组之间进行merge排序。 堆排序:数据量大,而只需要知道最大或最小的几个,可以用堆排序。 Top K:https://blog.csdn.net/laojiu_/article/details/54986553 速度很快(类似快排选一个基准,不过这个基准选取方式为:n个数据5个一组,每个排序得到组内中位数,各组之间中位数排序得到组间中位数,该中位数为基准,大于该值一边,小于的另一边,则最终左边和右边都至少有3/10的数据量,递归下去最后得到想要的位置)。 trie数(字典树):用于去重字符串。字典树每个树枝(两个节点之间连线)一个字符,从根节点到叶子节点构成了不同的路径,每个路径唯一地表示了一个字符串。 布隆过滤器:使用了bitmap和hash,一个数据散列出n个特征点