본문 바로가기
빅데이터/hive

[Hive] 하이브의 정렬, 집계, 유저 함수, 조인, 서브쿼리, 뷰의 정의

by hs_seo 2015. 9. 14.

정렬과 집계

하이브의 데이터 정렬은 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)

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

 

반응형