Search

Hive 테이블

데이터를 Hive 테이블로 가져와 생성하면 Hive Query, Pig, Spark 등을 통해 데이터를 처리할 수 있다.
Hive 테이블은 저장되는 위치에 따라 내부 테이블, 외부 테이블 두가지로 나뉜다.

내부 테이블

하이브 데이터 웨어하우스(/hive/warehouse)에 저장되어 Hive가 직접 관리하는 테이블이다. 내부 테이블을 삭제하면 Hive 테이블 metastore 정보와 테이블에 들어있는 모든 데이터가 같이 삭제된다.
ORC(Optimized Row Columnar)파일을 통해 최적화 된 저장 방식을 사용할 수 있어 비교적 좋은 성능을 낼 수 있다.
ORC structure
# .csv 파일 -> 내부 테이블 생성 예 CREATE TABLE IF NOT EXISTS Names_text( > Column1_name <DATA TYPE>, > Column2_name <DATA TYPE>, > Column3_name <DATA TYPE>, ... > ColumnN_name <DATA TYPE>) > COMMENT 'example table' > ROW FORMAT DELIMITED > FIELDS TERMINATED BY ',' > STORED AS TEXTFILE > LOCATION '/path/to/csv/file';
SQL
복사

외부 테이블

하이브가 직접 관리하지 않으며, 하이브의 메타 정의만 사용해 원시 형태로 저장된 텍스트 데이터에 접근하여 데이터를 읽어들인다. 외부 테이블의 데이터를 삭제하면 하이브의 테이블 메타정보만 삭제되고 실제 데이터는 그대로 유지된다.
해당 데이터가 하이브 외부에 적재되어 있거나 테이블이 삭제되더라도 원본 데이터가 본래 위치에 남아야 할 때 주로 사용된다.
# .csv 파일 -> 외부 테이블 생성 예 CREATE EXTERNAL TABLE IF NOT EXISTS Names_text( # 외부 테이블 생성 > Column1_name <DATA TYPE>, > Column2_name <DATA TYPE>, > Column3_name <DATA TYPE>, ... > ColumnN_name <DATA TYPE>) #컬럼 정의 > COMMENT 'example table' #테이블 설명 주석 > ROW FORMAT DELIMITED #ROW 구분자 설정 > FIELDS TERMINATED BY ',' #필드를 콤마로 구분 > STORED AS TEXTFILE #.csv: textfile > LOCATION '/path/to/csv/file'; #HDFS 내 .csv 경로
SQL
복사