정렬과 집계
하이브의 데이터 정렬은 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)
- 단일 로우를 처리하고 다중로우를 생성
'빅데이터 > hive' 카테고리의 다른 글
[hive][개념] 하이브 서버2(hiverserver2), 비라인(beeline) (0) | 2016.08.26 |
---|---|
[하이브] 파티션 복구 하기(repair partitions) (0) | 2016.07.11 |
[에러] hive의 INSERT .. SELECT 작업중 No input paths specified in job 에러 (0) | 2016.06.29 |
[Tip/프로퍼티] hive에서 load 할 파일이 없을 때 발생하는 NullPointerException 회피하기 (0) | 2016.01.06 |
[hive] 조회 조건에 정규식 이용하기 (0) | 2014.12.26 |