Hive 입문 학습: explain 실행 계획의 이해

3778 단어

Hive 입문 학습: explain 실행 계획의 이해




하이브가 실행할 때 대응하는 SQL 문장을 마프리듀스 코드로 변환하여 실행하는 것을 우리는 모두 알고 있다. 그러나 구체적인 MR 실행 정보를 우리는 어떻게 알아볼 수 있을까?여기에 explain의 키워드를 사용했는데, 그는 실행에 대응하는 문장에 대응하는 MR 코드를 상세하게 나타낼 수 있다.문법 양식은 다음과 같다.extended 키워드는 코드의 실행 과정을 더욱 상세하게 열거할 수 있습니다.
EXPLAIN [EXTENDED|DEPENDENCY|AUTHORIZATION] query

explain은 쿼리 문장을 Stage로 구성된 서열로 전환하는데 주로 세 가지 측면으로 구성된다.
1: 질의의 추상 구문 트리
2:plane의 각 스테이지의 의존 상황
3: 각 단계의 구체적인 설명: 구체적으로 말하면 대응하는 조작 산자와 그에 대응하는 데이터를 나타내는 것이다. 예를 들어 조회 산자, Filter 산자,fetch 산자 등이다.다음은 제가 구체적인 예를 하나 보겠습니다.
<span style="font-size:18px;">explain  
from emp insert overwrite table emp_explain  
select job,sum(substr(emp.sal,4))  
group by emp.job;</span>
 
                
위와 같은 코드를 의미하는 3개의 스테이지로 나뉜다.또한 스테이지는 하나의 루트 스테이지로서 스테이지 0은 스테이지 1에 의존하고 스테이지 2는 스테이지 0에 의존한다.구체적으로 모든 스테이지의 의존 정보를 나타낸다.
              
               
<span style="font-size:24px;">STAGE PLANS:
  Stage: Stage-1
    Map Reduce
	
      Map Operator Tree://     
          TableScan
            alias: emp//   emp      
            Statistics: Num rows: 6 Data size: 656 Basic stats: COMPLETE Column stats: NONE
            Select Operator  //select    
              expressions: job (type: string), sal (type: double)//select       
              outputColumnNames: job, sal
              Statistics: Num rows: 6 Data size: 656 Basic stats: COMPLETE Column stats: NONE
              Group By Operator//  group by    
                aggregations: sum(substr(sal, 4))//    
                keys: job (type: string)
                mode: hash
                outputColumnNames: _col0, _col1//       
                Statistics: Num rows: 6 Data size: 656 Basic stats: COMPLETE Column stats: NONE
                Reduce Output Operator
                  key expressions: _col0 (type: string)
                  sort order: +
                  Map-reduce partition columns: _col0 (type: string)
                  Statistics: Num rows: 6 Data size: 656 Basic stats: COMPLETE Column stats: NONE
                  value expressions: _col1 (type: double)
      Reduce Operator Tree:
        Group By Operator
          aggregations: sum(VALUE._col0)
          keys: KEY._col0 (type: string)
          mode: mergepartial
          outputColumnNames: _col0, _col1
          Statistics: Num rows: 3 Data size: 328 Basic stats: COMPLETE Column stats: NONE
          Select Operator
            expressions: _col0 (type: string), UDFToInteger(_col1) (type: int)
            outputColumnNames: _col0, _col1
            Statistics: Num rows: 3 Data size: 328 Basic stats: COMPLETE Column stats: NONE
            File Output Operator
              compressed: false
              Statistics: Num rows: 3 Data size: 328 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
                  name: emp_dept.emp_explain

  Stage: Stage-0
    Move Operator
      tables:
          replace: true
          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
              name: emp_dept.emp_explain

  Stage: Stage-2
    Stats-Aggr Operator//    </span>

구체적인 정보는 번역 언어의 번역 원리 등 기술을 더 알아야 하기 때문에 여기서는 더 이상 이해하지 못한다.

좋은 웹페이지 즐겨찾기