Hive Map-Join配置错误

时间:2019-02-16 18:07:31

标签: hive query-optimization hiveql mapjoin

有人可以清楚地说明两者之间的区别吗

hive.auto.convert.join

hive.auto.convert.join.noconditionaltask

配置参数?

还有这些相应的尺寸参数:

hive.mapjoin.smalltable.filesize

hive.auto.convert.join.noconditionaltask.size

我的观察是,在hive.auto.convert.join.noconditionaltask.size设置为足够高的值的情况下,即使hive.mapjoin.smalltable.filesize设置为小于小表的大小,Map-Join仍可工作。

为什么我们都需要

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

Apache documentation非常混乱。

1 个答案:

答案 0 :(得分:1)

这些参数用于确定在蜂巢中何时对Map Join使用Common joinMap join,最终最终影响查询性能。

hive.auto.convert.join用于连接表之一足够小以适合内存的情况,因此速度非常快。这是所有参数的说明:

true

当此参数设置为hive.mapjoin.smalltable.filesize时,Hive将自动检查较小的表文件大小是否大于hive.auto.convert.join.noconditionaltask指定的值,如果大于此值,则通过普通联接查询执行。启用自动转换联接后,无需在查询中提供地图联接提示。

hive.auto.convert.join = true

当三个或三个以上的表涉及联接时,

hive.auto.convert.join.noconditionaltask = true-Hive假定所有表的大小较小,会生成三个或更多的地图侧联接。

hive.auto.convert.join.noconditionaltask.size,如果n-1表的大小小于10 MB,则配置单元会将三个或更多映射侧联接合并为单个映射侧联接。大小由hive.mapjoin.smalltable.filesize定义。

map join

此设置基本上是告诉优化程序系统中小表定义的方式。该值为您定义了什么是小表,然后在基于此值执行查询时,它确定联接是否有资格转换为hive.auto.convert.join.noconditionaltask.size

> Installing gem bundle > You must use Bundler 2 or greater with this lockfile. > Error during gem install > failed during stage 'building site': Build script returned non-zero exit code: 1 > Error running command: Build script returned non-zero exit code: 1 > Failing build: Failed to build site

大小配置使用户可以控制什么大小的表可以容纳在内存中。该值表示可以转换为适合内存的哈希表的表大小的总和。

这是一个很好的说明链接,其中包括对所有4个参数的描述,并带有示例:

http://www.openkb.info/2016/01/difference-between-hivemapjoinsmalltabl.html