without haste but without rest

Hive 개념과 특징 본문

Data Engineering & DataOps/Hadoop

Hive 개념과 특징

JinungKim 2021. 12. 10. 15:28

0. Hive

하둡의 맵리듀스 작업을 실행하는 방법은 여러가지가 존재한다.    

    

  1. 정형, 반정형, 비정형 데이터에 대해 자바 맵리듀스 프로그램을 사용하는 기존 방법
  2. Pig를 사용해서 구조화된 데이터와 반구조화된 데이터를 스크립팅(절차적 언어)로 처리하는 방법
  3. Hive를 사용해서 구조화된 데이터를 맵리듀스용 쿼리 언어인 HiveQL 사용해서 처리하는 방법

Hive는 하둡에서 구조화된 데이터를 처리하기 위한 데이터 웨어하우스 인프라 도구다. 빅데이터를 요약하고 쿼리 및 분석을 쉽게 만들어준다.
기존의 자바 기반으로 프로그램을 작성해야하는 맵리듀스를 SQL로 작성가능하다는 것이 포인트다.

(분석 엔진은 현재는 Tez를 기반으로 사용하는 것으로 알고 있고, 인메모리 기반인 Presto(프레스토)도 하이브와 함께 언급되는 분석 엔진 중 하나인 듯)

하이브의 특징

  • 스키마는 데이터베이스(하이브 메타스토어)에 저장하고 처리한 데이터는 HDFS에 저장한다.
  • OLAP 용으로 설계되었다.
  • HiveQL 이라는 SQL 스타일의 언어를 제공

1. Cheat Sheet

샘플 데이터

# sample.txt

1201,Gopa,45000,Technical manager
1202,Manisha,45000,Proof reader
1203,Masthanvali,40000,Technical writer
1204,Kiran,40000,Hr Admin
1205,Kranthi,3000,Op Admin

(1). 데이터베이스 관련

# 데이터베이스 생성
CREATE DATABASE db_name;

# 데이터베이스 조회
SHOW DATABASES;

# 데이터베이스 지정
USE db_name;

# 데이터베이스 삭제
DROP DATABASE db_name;

(2). 테이블 관련

# 테이블 생성
CREATE TABLE sample (
number INT,
name STRING, 
salary INT, 
job STRING
) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

# 테이블 리스트 조회
SHOW TABLES;

# 테이블 삭제
DROP TABLE sample;

# 테이블 정보 조회
DESC FORMATTED sample;

# 테이블 데이터 조회
SELECT * FROM sample;

# 테이블 정보 변경
ALTER TABLE name RENAME TO new_name
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
ALTER TABLE name DROP [COLUMN] column_name
ALTER TABLE name CHANGE column_name new_name new_type
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])

(3). HDFS에서 데이터 로드

# sample.txt 데이터를 HDFS에 저장
hdfs dfs -put sample.txt /

# HDFS에 저장한 데이터를 Hive 테이블로 로드
LOAD DATA INPATH '/sample.txt/' OVERWRITE INTO TABLE sample;

단, 로드한 데이터가 HDFS에서 제거되므로 좋은 방법은 아닌 듯 하다. (아마 제거하지 않는 옵션이 있을 법 한데..)
hdfs dfs -cp 명령어로 사용할 파일을 하이브 디렉토리로 복사하는 게 대안인 듯
로드한 데이터는 HDFS의 /user/hive/warehouse/ 경로에 저장된다.

Comments