2017-05-14 4 views
0

단일 테이블 (크기 약 12GB)에 대한 단일 쿼리에서 측면보기가 여러 번 (약 9 번) 폭발했습니다. 이로 인해 엄청난 양의지도 측 데이터 (100Pb +)가 생성되었습니다. 12GB에서이 양의 데이터가 어떻게 생성되었는지 이해할 수 없었습니다.하이브 측면도 분해 내부 메커니즘

누군가가 측면 폭발이 작동하는 방식을 설명해주십시오. (내부적으로)? 사전에

감사

답변

1

데모

create table mytable (a1 array<int>,a2 array<int>,a3 array<int>); 
insert into mytable select array(1,2),array(3,4,5),array(6,7,8,9); 

select * 

from mytable 
     lateral view explode (a1) e1 as a1_val 
     lateral view explode (a2) e2 as a2_val 
     lateral view explode (a3) e3 as a3_val 
;   

+-------+---------+-----------+--------+--------+--------+ 
| a1 | a2 | a3  | a1_val | a2_val | a3_val | 
+-------+---------+-----------+--------+--------+--------+ 
| [1,2] | [3,4,5] | [6,7,8,9] |  1 |  3 |  6 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  1 |  3 |  7 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  1 |  3 |  8 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  1 |  3 |  9 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  1 |  4 |  6 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  1 |  4 |  7 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  1 |  4 |  8 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  1 |  4 |  9 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  1 |  5 |  6 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  1 |  5 |  7 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  1 |  5 |  8 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  1 |  5 |  9 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  2 |  3 |  6 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  2 |  3 |  7 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  2 |  3 |  8 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  2 |  3 |  9 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  2 |  4 |  6 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  2 |  4 |  7 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  2 |  4 |  8 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  2 |  4 |  9 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  2 |  5 |  6 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  2 |  5 |  7 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  2 |  5 |  8 | 
| [1,2] | [3,4,5] | [6,7,8,9] |  2 |  5 |  9 | 
+-------+---------+-----------+--------+--------+--------+  
+0

안녕하세요 두두, 답변을 주셔서 감사합니다. 나는 측면보기의 내부 메커니즘이 폭발하고 Hive가 쿼리를 내부적으로 어떻게 실행하는지 알고 싶다. –

+0

내부는 귀하의 문제와 관련이 없습니다. 배열 폭발은 요소 당 레코드를 생성합니다. 폭발하는 다중 배열은 제품 조인과 동일합니다. –

+0

죄송합니다 Dudu, 깜빡했습니다. 감사. –