Hive 配置单元映射连接配置之谜

Hive 配置单元映射连接配置之谜,hive,query-optimization,hiveql,mapjoin,hive-configuration,Hive,Query Optimization,Hiveql,Mapjoin,Hive Configuration,有人能解释清楚这两者的区别吗 hive.auto.convert.join 及 配置参数 此外,这些相应的尺寸参数: hive.mapjoin.smalltable.filesize 及 我的观察是,在Tez上运行时,当hive.auto.convert.Join.noconditionaltask.size设置为足够高的值时,Map Join工作,即使hive.mapjoin.smalltable.filesize设置为小于小表的大小 为什么我们两者都需要 hive.auto.conver

有人能解释清楚这两者的区别吗

hive.auto.convert.join

配置参数

此外,这些相应的尺寸参数:

hive.mapjoin.smalltable.filesize

我的观察是,在Tez上运行时,当
hive.auto.convert.Join.noconditionaltask.size
设置为足够高的值时,Map Join工作,即使
hive.mapjoin.smalltable.filesize
设置为小于小表的大小

为什么我们两者都需要

hive.auto.convert.join
hive.auto.convert.join.noconditionaltask


这些参数用于决定何时对配置单元中的
公共连接使用
映射连接
,这最终会影响查询性能

Map join
用于其中一个连接表小到可以放入内存,因此速度非常快。以下是所有参数的说明:

hive.mapjoin.smalltable.filesize
hive.auto.convert.join

当此参数设置为
true
时,配置单元将自动检查较小的表文件大小是否大于
Hive.mapjoin.smalltable.filesize
指定的值,如果大于此值,则通过公共联接执行查询。启用自动转换联接后,无需在查询中提供映射联接提示

hive.auto.convert.join.noconditionaltask

当联接涉及三个或更多表时,以及

hive.auto.convert.join=true
-假设所有表的大小都较小,hive会生成三个或更多的映射侧连接

hive.auto.convert.join.noconditionaltask=true
,如果n-1表的大小小于10 MB,则hive将把三个或更多的映射侧联接合并为一个映射侧联接。这里的大小由
hive.auto.convert.join.noconditionaltask.size
定义

hive.mapjoin.smalltable.filesize

此设置基本上是告诉优化器系统中小表的定义的方法。该值定义了什么是小表,然后当基于该值执行查询时,它确定join是否有资格转换为
映射join

hive.auto.convert.join.noconditionaltask.size

大小配置使用户能够控制内存中可以容纳的表大小。此值表示可以转换为适合内存的哈希映射的表的大小之和

下面是一个非常好的解释链接,其中包括对所有4个参数的描述,并附有一个示例:


非常感谢您的链接和解释!
hive.auto.convert.join.noconditionaltask.size