Impala 的广播式关联 和 分区后散列关联
Impala 如何计划并执行分布式关联查询
广播式关联:
Impala 默认的关联方式就是广播式关联,它的原理是 在多张表进行关联时,将最小的数据集发送到执行sql 计划的 Impalad 中,Impalad接收到数据以后,按照哈希表的方式存放到内存中,在就近读取大的表数据,进行匹配。
分区后散列关联:
这个关联方式,会将sql 中涉及的表按照相同的散列函数形成不同的分区,将数据发送到各个Impalad 中,然后每个Impalad 在进行关联操作。
总结:
网络传输: 广播式关联只使用小表进行网络传输一次, 分区后散列关联则需要进行多次网络传输。
内存:广播式关联明显要使用更多的内存
我们可以在sql 中自定义关联的方式,但是我们一般不建议这么做,因为现在的小表以后不一定是小表,让程序自己判断就好了。