Hive는 무조건 MapReduce를 사용할까?
Hive는 무조건 MapReduce를 사용할까
· Version : Hive
Hive에서 쿼리를 실행할때, 무조건 맵리듀스(MapReduce)를 사용할까? 하이브에서 대부분의 쿼리를 실행할 경우 맵리듀스가 사용된다. 하지만 일부 쿼리의 경우 로컬 모드 환경에서 맵리듀스를 사용하지 않고도 쿼리가 동작 할수도 있다. 예를 들어 아래 스크립트 처럼 단순히 테이블을 조회하는 쿼리는 맵리듀스를 사용하지 않는다.
select * from tbl_a; |
단순히 SELECT와 같은 쿼리는 하이브가 테이블로 부터 레코드를 읽고 형식에 맞춰서 콘솔로 출력한다. 이 경우 맵리듀스 작업대신 파일에서 Fetch Task로 전체 데이터를 가져온다. 마치 아래 하둡 명령과 유사하다.
hadoop fs -cat $ file_name |
일반적으로 min / max / count와 같은 모든 종류의 집계에는 맵리듀스 작업이 필요하다. 또한 컬럼을 사용하게 되면 하이브는 파일에서 구문을 분석하여 각 행에서 컬럼을 추출해야 하므로 맵리듀스 작업이 필요하다.
hive.exec.mode.local.auto 속성을 true로 설정하면 다른 연산도 로컬 모드로 실행을 시도한다.
hive.exec.mode.local.auto = true; |
2020-07-14 / Sungwook Kang / http://sungwookkang.com
Hadoop, Big Data, 하둡, 빅데이터, 데이터분석, HDFS, 하둡 파일 시스템, Hive, 하이브, 하이브 테이블, Hive table, 하이브쿼리, Hive SQL, 맵리듀스, MapReduce