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