文章目录
![在这里插入图片描述](https://img-blog.csdnimg.cn/7b5692e84601492d8f337420d61191b6.jpeg)
1.概述
看这个问题,可以先看看【Flink】Flink here spill the th sort buffer data with bytes and compressed bytes
首先我们看BinaryExternalSorter这个类。BinaryExternalSorter
是一个完全成熟的二进制格式排序器。它实现了多路归并排序。在内部,它有三个异步线程(排序、溢出、合并),它们通过一组阻塞的循环队列进行通信,形成一个闭环。使用MemoryManager
接口分配内存。因此,该组件不会超过所提供的内存限制。
看调用的地方可以知道,这个类是排序或者join相关的。我们知道join的时候,也是会进行排序的。
2.1 BinaryExternalSorter构造函数
下面就是创建BinaryExternalSorter这个对象,该对象主要做了如下操作
- 获取外部合并排序的最大扇入。它限制每个操作符的文件句柄数。如果太小,可能会导致中间合并。但如果它太大,会导致同时打开太多文件,消耗内存,导致随机读取。
- 是否压缩溢出的