高级知识点:并行计算【笔记】
并行计算
并行计算的方法
将数据拆分到每个节点上,对应的问题就是如何拆分
每个节点并行的计算出结果,对应的问题是每一个节点算出来的是什么结果
将结果汇总,问题就是如何汇总结果
例如,如何排序10G个元素?
外部排序一般会使用扩展的归并排序
归并排序操作:将数据分为左右两半,分别归并排序,再将两个有序数据归并,那么如何归并?
简单来说就是先比较数的大小,然后将小的数提出来,当两边一样大的时候,放左边的数
这样外部排序就可以
整个算法的实现重点部分在归并的方法
归并结点的实现(k路归并)
需要使用堆的结构来优化,因为堆是二叉树,树根就是最小点,然后一点一点将树根取出来,一路比较变换,最后结束
这种在库中一般叫做priorityqueue
只要每个数据源最小的元素放到内存中就可以,但是这样就会很慢,效率比较低,所以可以设置一个缓冲区,一点一点的输出
在归并中使用iterable
归并数据源来自iterable
如果缓冲区为空,读取下一批元素放入缓冲区
给出缓冲区第一个元素
可配置项:缓冲区大小,如何读取下一批元素