排序合并Bucket Join与Sort Merge Bucket Map join不同吗?如果是这样,应该添加什么提示以启用SMB加入?SMBM如何优于SMB加入?
将"设置hive.auto.convert.sortmerge.join = true"这个提示单独用于SMB加入吗?否则,还应包括以下提示.
set hive.optimize.bucketmapjoin = true set hive.optimize.bucketmapjoin.sortedmerge = true
我问的原因是,提示说Bucket map join,但是这里没有执行MAP join.我假设map和reduce任务都涉及SMB,而SMBM中只涉及map任务.
如果我错了,请纠正我.
小智 6
如果您的表很大(由"set hive.mapjoin.smalltable.filesize;"确定),则无法进行地图侧连接.除了你的表被分区和排序,并且你打开"set hive.optimize.bucketmapjoin.sortedmerge = true",你仍然可以在大型表上进行地图侧连接.(当然,你还需要"set hive.optimize.bucketmapjoin = 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以确保正确设置.
存储桶连接的其他要求是两个表应该具有
如果满足所有要求,则将执行MAP连接.它会闪电般快速.
顺便说一下,Hive 1.X for ORC格式不支持SMB Map Join.您将获得一个null异常.该错误已在2.X中修复.
| 归档时间: |
|
| 查看次数: |
3702 次 |
| 最近记录: |