2016-06-13 10 views
0

SMB結合の有無にかかわらずクエリを実行し、結果が異なります。説明してください。ハイブソートマージバケットマップ(SMBマップ)参加

SET hive.enforce.bucketing=true; 

create table dbaproceduresbuckets (
owner   string , 
object_name  string , 
procedure_name string , 
object_id  double , 
subprogram_id double , 
overload  string , 
object_type  string , 
aggregate  string , 
pipelined  string , 
impltypeowner string , 
impltypename string , 
parallel  string , 
interface  string , 
deterministic string , 
authid   string) 
CLUSTERED BY (object_id) SORTED BY (OBJECT_ID ASC) INTO 32 BUCKETS; 

CREATE TABLE dbaobjectsbuckets1(
owner   string, 
object_name  string, 
subobject_name string, 
object_id  double, 
data_object_id double, 
object_type  string, 
created   string, 
last_ddl_time string, 
timestamp  string, 
status   string, 
temporary  string, 
generated  string, 
secondary  string, 
namespace  double, 
edition_name  string) CLUSTERED BY (object_id) SORTED BY (OBJECT_ID ASC) INTO 32 BUCKETS; 

**** load the table; 

0:JDBC:hive2:// XXXXXX:10000> SELECT COUNT(*)dbaobjectsbuckets1から、B 0 dbaproceduresbucketsます。jdbc:hive2:// XXXXXXXX:10000> a.object_id = Bを。 object_id; INFO:ステージ2のHadoopジョブ情報:マッパーの数:3。減速機の数:1 インフォメーション:2016-06-13 15:56:00,381ステージ2マップ= 0%、減量= 0% 情報:2016-06-13 15:56:55,818ステージ2マップ= 1% 、減= 0%、累積CPU 122.6秒 情報:2016-06-13 15:57:47,124ステージ2マップ= 7%、削減= 0%、累積CPU 326.86秒 ......... 。 INFO:2016-06-13 16:05:01,246ステージ2マップ= 100%、削減率= 100%、累積CPU 867.1秒 INFO:MapReduce合計累積CPU時間:14分27秒100 msec INFO:終了ジョブ= job_1464280256859_0146 + -------- + - + | _c0 | + -------- + - + | 54876 | + -------- + - +

**** 
set hive.auto.convert.sortmerge.join=true; 
set hive.optimize.bucketmapjoin=true; 
set hive.optimize.bucketmapjoin.sortedmerge=true; 
set hive.auto.convert.sortmerge.join.noconditionaltask=true; 
set hive.enforce.bucketing=true; 
set hive.enforce.sorting=true; 

0: jdbc:hive2://xxxxxxx:10000> select count(*) from dbaobjectsbuckets1 a, dbaproceduresbuckets b 

0:JDBC:hive2:// XXXXXXXX:10000>ここでa.object_id = b.object_id。

in the execution plan, I am seeing 

|ソートされたマージバケットマップ結合演算子| |条件マップ:| |内部結合0から1 | |キー:| | 0 object_id(タイプ:double)| | 1 OBJECT_ID(タイプ:ダブル)

**** but the result is showing 
INFO : Hadoop job information for Stage-1: number of mappers: 32; number of reducers: 1 
    ...... 
INFO : MapReduce Total cumulative CPU time: 4 minutes 8 seconds 490 msec 

INFO:終了したジョブ= job_1464280256859_0150 + ------ + - + | _c0 | + ------ + - + | 2 | + ------ + - +

?????私の質問は、私がSMBに参加したときに2になったのはなぜですか?それは54876であるはずです。

ありがとう!句によって

答えて

1

使用ソート

又は

set hive.enforce.sorting=true 

ソートテーブル

にデータを挿入する前にソートされたテーブルにデータを挿入しながら