代码之家  ›  专栏  ›  技术社区  ›  leftjoin

蜂窝映射连接配置错误

  •  0
  • leftjoin  · 技术社区  · 6 年前

    有人能解释一下

    hive.auto.convert.join
    

    hive.auto.convert.join.noconditionaltask
    

    配置参数?

    这些相应的尺寸参数:

    hive.mapjoin.smalltable.filesize
    

    hive.auto.convert.join.noconditionaltask.size
    

    我的观察是当运行在Tez上时,Map Join在 hive.auto.convert.join.noconditionaltask.size 设置为足够高的值,即使在 hive.mapjoin.smalltable.filesize 比小桌子的尺寸小。

    为什么我们两个都需要

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

    这个 Apache documentation 很混乱。

    0 回复  |  直到 5 年前
        1
  •  3
  •   Jainik    6 年前

    这些参数用于决定何时使用 Map Join Common join 在配置单元中,最终会影响查询性能。

    Map join 当其中一个联接表小到足以容纳内存时使用,因此它非常快。以下是所有参数的说明:

    hive.auto.convert.join

    当此参数设置为 true hive.mapjoin.smalltable.filesize ,如果大于此值,则通过公共联接执行查询。启用自动转换联接后,无需在查询中提供映射联接提示。

    hive.auto.convert.join.noconditionaltask

    当三个或更多的表参与联接时,并且

    hive.auto.convert.join = true -Hive生成三个或更多的map side连接,并假设所有表的大小都较小。

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

    配置单元.mapjoin.smalltable.filesize

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

    大小配置允许用户控制表在内存中的大小。此值表示可以转换为适合内存的哈希映射的表大小之和。

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