티스토리 뷰

정렬과 집계

하이브의 데이터 정렬은 order by 절로 처리 가능

-       하지만 order by 처리하기 위해서는 모든 처리의 결과를 집계해야 하기 때문에 리듀서의 개수가 1개가 되어야 한다.

-       마지막 결과파일의 개수가 1개가 된다.

전체적인 정렬의 결과가 필요 없다면, sort by를 사용하면 된다.

-       sort by는 리듀서당 정렬된 파일을 생성

어떤 경우에는 특정 로우가 특정 리듀서로 가도록 설계하여 집계연산을 사용하는 것이 좋다.

-       distributed by가 이 역할을 한다.

sort by, distributed by에 사용되는 칼럼이 같다면 둘 다를 동시에 지정하기 위해 약칭으로 cluster by를 사용할 수 있다.

 

 	select year, temperature
 	  from records2
 	 distribute by year
 	 sort by year, temperature;

 

조인

inner join, outer join 지원

세미 조인

-       where 조건의 in 연산에 서브쿼리를 지원하지 않지만, 같은 결과를 얻을 수 있는 left semi join을 사용할 수 있음

-       semi join의 아래의 테이블은 on 절에서만 보인다.

맵 조인

-       테이블 하나가 메모리에 적재될 만큼 충분히 작다면 하이브는 각 매퍼 단위로 조인을 수행할 수 있도록 작은 테이블을 메로리로 적재 시킬수 있다.

 

	select /*+ MAPJOIN(things) */ 
	       sales.*, things.* 
	  from sales join things on (sales.id = things.id);

서브쿼리

서브쿼리는 from 절에서만 사용 가능

 

뷰는 생성 시점에 파일을 생성하지 않고, 메타스토어에 저정됨

 

사용자 정의 함수

사용자 정의함수(User Defined Function)

-       단일 로우를 처리하고 결과 또한 단일 로우로 내준다.

-       수학함수, 문자열 함수 등

사용자 정의 집계 함수(User Defined Aggregate Function)

-       다중입력 로우를 처리하고 단일 로우로 출력한다.

-       count, max

사용자 정의 테이블 생성 함수(User Defined Table-generating Function)

-       단일 로우를 처리하고 다중로우를 생성

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함