Hive 数据记录的顺序是否对连接表很重要

Hive Does the order of the data record matters for joining tables

我想知道连接两个表时数据记录的顺序是否重要(性能方面)?
P.S。我没有使用任何地图端连接或桶连接。

谢谢!

一方面,顺序应该无关紧要,因为在 shuffle join 文件被映射器并行读取的过程中,文件也可能在几个映射器之间拆分,反之亦然,一个映射器可以读取几个文件,然后映射器输出通过到每个减速器。 即使数据已排序,由于并行性,它也不会按顺序读取和分发

另一方面,排序会根据数据熵提高压缩率。类似的数据可以更好地压缩。因此,按顺序压缩的文件更小,并且在连接查询执行期间读取速度更快。这可能会提高连接速度,因为如果数据在加载期间按过滤列排序并启用 PPD,则映射器将更快地读取数据并且 ORC 中的内部索引可以高效工作。排序和压缩后的文件大小可以减少 3 倍甚至更多,这将导致映射器减少 3 倍。

一次写入排序,多次读取,排序效率更高。