2016-08-10 4 views
1

저는 버킷 열을 가지고 있으며 모든 매개 변수를 설정 한 후에도 성능상의 이점을 얻지는 못합니다. 다음은 내가 사용하고있는 버킷과 내가 작성한 버킷입니다. 계획 결과를 설명해주었습니다.하이브에서 버켓팅이 작동하지 않습니다.

select count(*) from bigtable_main a inner join 
big_cnt10000 b where a.srrecordid = b.srrecordid; 
---112 seconds.... 

ALTER TABLE bigtable_main CLUSTERED BY(srrecordid) SORTED BY(srrecordid) INTO 40 BUCKETS ; 
ALTER TABLE big_cnt10000 CLUSTERED BY(srrecordid) SORTED BY(srrecordid) INTO 40 BUCKETS ; 

---112 seconds.... 
--------------------------------------------------- 
SET hive.enforce.bucketing=true; 
SET hive.optimize.bucketmapjoin=true; 
set hive.auto.convert.sortmerge.join=true; 
set hive.optimize.bucketmapjoin = true; 
set hive.optimize.bucketmapjoin.sortedmerge = true; 

even the explain plan is same. Any idea? 
Vertex dependency in root stage 
Map 1 <- Map 3 (BROADCAST_EDGE) 
Reducer 2 <- Map 1 (SIMPLE_EDGE) 

Stage-0 
    Fetch Operator 
     limit:-1 
     Stage-1 
     Reducer 2 
     File Output Operator [FS_13] 
      compressed:false 
      Statistics:Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE 
      table:{"input format:":"org.apache.hadoop.mapred.TextInputFormat","output format:":"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat","serde:":"org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"} 
      Group By Operator [GBY_11] 
      | aggregations:["count(VALUE._col0)"] 
      | outputColumnNames:["_col0"] 
      | Statistics:Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE 
      |<-Map 1 [SIMPLE_EDGE] 
       Reduce Output Operator [RS_10] 
        sort order: 
        Statistics:Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE 
        value expressions:_col0 (type: bigint) 
        Group By Operator [GBY_9] 
        aggregations:["count()"] 
        outputColumnNames:["_col0"] 
        Statistics:Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE 
        Select Operator [SEL_8] 
         Statistics:Num rows: 31669970 Data size: 3166997036 Basic stats: COMPLETE Column stats: NONE 
         Filter Operator [FIL_16] 
          predicate:(_col0 = _col11) (type: boolean) 
          Statistics:Num rows: 31669970 Data size: 3166997036 Basic stats: COMPLETE Column stats: NONE 
          Map Join Operator [MAPJOIN_19] 
          | condition map:[{"":"Inner Join 0 to 1"}] 
          | HybridGraceHashJoin:true 
          | keys:{"Map 3":"srrecordid (type: string)","Map 1":"srrecordid (type: string)"} 
          | outputColumnNames:["_col0","_col11"] 
          | Statistics:Num rows: 63339940 Data size: 6333994073 Basic stats: COMPLETE Column stats: NONE 
          |<-Map 3 [BROADCAST_EDGE] 
          | Reduce Output Operator [RS_5] 
          |  key expressions:srrecordid (type: string) 
          |  Map-reduce partition columns:srrecordid (type: string) 
          |  sort order:+ 
          |  Statistics:Num rows: 42529 Data size: 4252905 Basic stats: COMPLETE Column stats: NONE 
          |  Filter Operator [FIL_18] 
          |  predicate:srrecordid is not null (type: boolean) 
          |  Statistics:Num rows: 42529 Data size: 4252905 Basic stats: COMPLETE Column stats: NONE 
          |  TableScan [TS_1] 
          |   alias:b 
          |   Statistics:Num rows: 85058 Data size: 8505810 Basic stats: COMPLETE Column stats: NONE 
          |<-Filter Operator [FIL_17] 
           predicate:srrecordid is not null (type: boolean) 
           Statistics:Num rows: 57581763 Data size: 5758176306 Basic stats: COMPLETE Column stats: NONE 
           TableScan [TS_0] 
            alias:a 
            Statistics:Num rows: 115163525 Data size: 11516352512 Basic stats: COMPLETE Column stats: NONE 

답변

0

하이브 컴파일러는 메타 데이터가 필요하며 메타 정보는 실행 계획을 결정합니다. doc

컴파일러에서 메타 데이터가 필요하므로 getMetaData에 대한 요청을 보내고 MetaStore에서 sendMetaData 요청을 수신합니다.

이 메타 데이터는 쿼리 트리의 식을 typecheck하고 쿼리 조건자를 기반으로 파티션을 정리하는 데 사용됩니다. 컴파일러가 생성 한 계획은 맵/축소 작업, 메타 데이터 작업 또는 HDFS 작업 중 하나 인 스테이지의 DAG입니다. 맵/축소 단계의 경우 맵 운영자 트리 (맵퍼에서 실행되는 운영자 트리) 및 축소 연산자 트리 (감속기가 필요한 작업의 경우)

변경 저장 문은 테이블의 물리적 스토리지 속성을 변경하지만 메타.

적절한 버킷 강하 사용하여 테이블을 생성한다. 다음

상세에 대한 링크이다.

NOTE: These commands will only modify Hive's metadata, and will NOT reorganize or reformat existing data. Users should make sure the actual data layout conforms with the metadata definition.

+0

고맙습니다 ... 언급 한대로 효과가있었습니다. –

관련 문제