Hive 大数据排序优化:使用 Sort By 替代 Order By
当数据量比较大且需要排序时,使用 sort by 可以优化 order by 的性能。sort by 会在 map 端对每个分区进行排序,然后将结果汇总到 reduce 端进行最终排序。而 order by 则需要将所有数据都传输到 reduce 端进行排序,因此速度较慢。
为了保证结果相同,需要在 sort by 中指定分区数,并且分区数需要与 order by 中的分区数相同。可以使用以下语句设置分区数:
SET hive.exec.reducers.max=<分区数>;
分区数的设置需要考虑到数据量和集群的资源情况,一般建议将分区数设置为节点数的 2-3 倍。如果分区数设置过多,会导致每个分区的数据量过小,影响排序性能;如果分区数设置过少,会导致每个分区的数据量过大,影响并行度。
总之,根据数据量和集群资源情况,合理设置分区数可以提高 sort by 的性能,并且保证结果相同。
原文地址: https://www.cveoy.top/t/topic/lVZr 著作权归作者所有。请勿转载和采集!