如何检查排序合并存储桶连接在 HIVE 中是否工作?

use*_*082 2 hadoop hive

我想验证我的 SMB 加入是否正常工作。我可以通过日志验证映射加入,但不能通过 SMB。我也执行了解释计划,但无法得到任何提示。请帮我。

Dab*_*aus 5

您可以对查询使用 EXPLAIN EXTENDED。到目前为止,我只能使用 map-reduce 生成 SMB 映射连接。当 hive 执行 SMB 映射连接时,您可以在解释输出中的阶段计划下看到“排序合并桶映射连接运算符”。

以下是在我的设置中使用 map-reduce 生成 SMB 映射连接的代码片段:

set hive.execution.engine=mr;
set hive.auto.convert.sortmerge.join=true;
set hive.optimize.bucketmapjoin=true;
set hive.optimize.bucketmapjoin.sortedmerge=true;
set hive.enforce.bucketing=true;
set hive.enforce.sorting=true;
set hive.auto.convert.join=true;

drop table key_value_large;
drop table key_value_small;

create table key_value_large  (
    key int,
    value string
)
partitioned by (ds string)
CLUSTERED BY (key) SORTED BY (key ASC) INTO 8 BUCKETS 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE;

create table key_value_small (
    key int,
    value string
)
partitioned by (ds string)
CLUSTERED BY (key) SORTED BY (key ASC) INTO 4 BUCKETS
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE;


insert into table key_value_large partition(ds='2008-04-08') select key, value from key_value_large_src;
insert into table key_value_small partition(ds='2008-04-08') select key, value from key_value_small_src;

explain extended select count(*) from key_value_large a JOIN key_value_small b ON a.key = b.key;
select count(*) from key_value_large a JOIN key_value_small b ON a.key = b.key;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助某人。