gpt4 book ai didi

join - Hive Sort 合并桶加入

转载 作者:行者123 更新时间:2023-12-04 00:06:39 25 4
gpt4 key购买 nike

Sort merge Bucket Join 与 Sort Merge Bucket 是否不同 map 加入?如果是这样,应该添加什么提示来启用 SMB 加入? SMBM 加入如何优于 SMB 加入?

“set hive.auto.convert.sortmerge.join=true”这个提示是否足以满足SMB加入?否则,还应包括以下提示。

设置 hive.optimize.bucketmapjoin = true
设置 hive.optimize.bucketmapjoin.sortedmerge = true

我问的原因是,提示说 Bucket map join,但这里没有执行 MAP join。我假设 SMB 中涉及 map 和 reduce 任务,而 SMBM 中只涉及 map 任务。

如果我错了,请纠正我。

最佳答案

如果您的表很大(由“set hive.mapjoin.smalltable.filesize;”确定),则无法进行 map 侧连接。除了你的表被分桶和排序,并且你打开了“set hive.optimize.bucketmapjoin.sortedmerge = true”,那么你仍然可以在大表上进行 map 侧连接。 (当然,你还是需要“set hive.optimize.bucketmapjoin = true”)

确保您的表确实在同一列上进行了分桶和排序。犯错太容易了。要获得分桶和排序的表,您需要

  • 设置 hive.enforce.bucketing=true;
  • 设置 hive.enforce.sorting=true;
  • DDL 脚本
    CREATE table XXX
    (
    id int,
    name string
    )
    CLUSTERED BY (id)
    SORTED BY (id)
    INTO XXX BUCKETS
    ;
    INSERT OVERWRITE TABLE XXX
    select * from XXX
    CLUSTER BY member_id
    ;

  • 使用 describe formatted XXX并寻找 Num Buckets, Bucket Columns, Sort Columns以确保正确设置。

    桶连接的其他要求是两个表应该有
  • 数据存储在相同的列上,并且它们用在 ON 子句中。
  • 一个表的桶数必须是另一表的桶数的倍数。

  • 如果您满足所有要求,则将执行 MAP 加入。它会快如闪电。

    顺便说一下,对于 ORC 格式,Hive 1.X 并不很好地支持 SMB Map Join。你会得到一个 null exception .该错误已在 2.X 中修复。

    关于join - Hive Sort 合并桶加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40428228/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com