Hive:数据记录的顺序对于表连接有影响吗?

3

我想知道在连接两个表时,数据记录的顺序是否重要(从性能角度考虑)?
注:我没有使用任何地图端连接或桶连接。

谢谢!

1个回答

3
一方面,顺序不应该重要,因为在洗牌联接期间,映射器并行读取文件,而且文件可能在几个映射器之间分割,或者反过来,一个映射器可以读取几个文件,然后将映射器输出传递给每个约简器。即使数据已经排序,由于并行性,它也不按其顺序被读取和分发。
另一方面,根据数据熵,排序可以提高压缩率。类似的数据可以更好地压缩。因此,有序压缩的文件更小,在联接查询执行期间读取速度更快。这可能会提高联接速度,因为映射器将更快地读取数据,并且如果在加载和启用 PPD 时按过滤列对数据进行排序,则 ORC 中的内部索引会高效工作。排序和压缩的文件大小可以降低三倍甚至更多,这将导致映射器减少三倍。
当您写入和排序一次并多次阅读时,排序是有效的。

左连接,谢谢您的回复。我想问一下,如果我不使用任何压缩,那么排序数据不会影响/改善连接性能,对吗? - James
1
@James 如果您在插入ORC表之前使用ORC和sort+distribute,则在某些情况下排序可能会有所改善:https://community.hortonworks.com/articles/75501/orc-creation-best-practices.html - leftjoin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接