행위

Hive 문법

DB CAFE

thumb_up 추천메뉴 바로가기


1 HIVE 기초 문법[편집]

android 공통 사항

IF EXISTS : xx가 존재하면 적용


1.1 데이터 조회[편집]

-- 데이터 조회
SELECT * FROM my_table   -- 전체 데이터 조회
SELECT col_1, col_2 FROM my_table   -- 열 지정하여 데이터 조회
  • WHERE 절
SELECT * 
FROM my_table
WHERE col_1 >= 10   -- 조건
1.1.1 GROUP BY 그룹[편집]
  • count, sum, avg, min, max 등의 집계함수를 사용할 때 그룹을 묶어주는 기준이 된다.
    그룹함수가 적용되는 열 이외의 열에 GROUP BY를 해주지 않으면 오류 발생
-- 집계
SELECT col_1, count(col_2) as num_count   -- as : 조회될 때 별칭 지정
FROM my_table
GROUP BY col_1
  • HAVING 절 (그룹에 대한 조건 추가)
-- 그룹 컬럼(col_2) 건수가 10보다 큰것 
SELECT col_1, count(col_2) as num_count   -- as : 조회될 때 별칭 지정
FROM my_table
GROUP BY col_1
HAVING count(col_2) >= 10

1.2 DB 정보 조회[편집]

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

1.3 DB 생성[편집]

  • 데이터베이스 생성
-- 데이터베이스 생성
CREATE DATABASE db_name;
-- 존재하지 않으면 DB 생성
CREATE DATABASE IF NOT EXISTS db_name; 
-- 위치지정
CREATE DATABASE db_name LOCATION '/user/hive/DB_CYKIM';

1.4 DB 오브젝트 조회[편집]

  • 데이터베이스 정보 조회
-- 데이터베이스 정보 조회
DESCRIBE DATABASE db_name;
  • 테이블 목록 조회
-- 테이블 조회
SHOW TABLES;
  • 파티션

전체 파티션 조회

-- 테이블의 전체 Partition 조회하기
SHOW PARTITIONS db_name.table_name;
  • 특정 파티션의 정보
-- 특정 Partition의 정보 보기 (ex. location)
SHOW table extended like 'db_name.table_name' partition (dt='20210531');

1.5 DB 오브젝트 생성/변경/삭제[편집]

  • 테이블 생성
    코멘트, 위치지정, 파티션 지정 등은 선택 가능하다.
-- 테이블 생성
CREATE TABLE IF NOT EXISTS db_name.table_name (
    col_1 STRING COMMENT 'col_1',   -- 열이름 데이터타입
    col_2 FLOAT COMMENT 'col_2',
    col_3 INT COMMENT 'col_3'
COMMENT 'table_name in db_name'   -- 코멘트
LOCATION '/user/hive/mizykk/db_name.db/table_name'   -- 위치 지정
)
PARTITIONED BY (year INT, month INT, day INT);   -- 파티션 지정
  • 테이블 삭제
-- 테이블 삭제
DROP TABLE table_name;
DROP TABLE IF EXISTS table_name; -- 존재하면 삭제
  • 테이블명 변경
    • ALTER TABLE 현재테이블명 RENAME TO 바꿀테이블명;
-- 테이블명 변경 (changing table name)
ALTER TABLE now_table_name RENAME TO new_table_name;
  • 파티션 삭제
-- 테이블 Partition 삭제하기
ALTER TABLE db_name.table_name DROP IF EXISTS PARTITION(year=2021, month=5, day=31);
ALTER TABLE db_name.table_name DROP IF EXISTS PARTITION(dt='20210531');
  • 파티션 추가
    • 테이블에 Partition 추가하기 (이미 들어가 있는 Partition을 수정하고 싶을 때는 Partition Drop 이후 Add 함)
ALTER TABLE db_name.table_name add if not exists partition (dt='20210531');
ALTER TABLE db_name.table_name add if not exists partition (dt='20210531') location '/user/mizykk/my/new/location';
  • 컬럼(Columns) / 열
    • Column 이름 변경
ALTER TABLE 테이블명 CHANGE COLUMNS 이전_열_이름 바꿀_열_이름 데이터타입;
-- Column명 변경하기
ALTER TABLE table_name CHANGE [COLUMN] old_col_name new_col_name column_type [COMMENT col_comment] [FIRST|AFTER column_name];
ALTER TABLE db.items CHANGE COLUMN item_count item_count_avg BIGINT;   -- Example
    • Column 추가 / 삭제
ALTER TABLE 테이블명 ADD COLUMNS (추가할_열 데이터타입, 추가할_열 데이터타입);
-- Column 추가하기
ALTER TABLE table_name ADD [IF NOT EXISTS] COLUMNS (col_name col_type[, col_spec ...])
 -- Example
ALTER TABLE db.items ADD COLUMNS (item_count_min BIGINT, item_count_max BIGINT); 

ALTER TABLE table_name ADD COLUMN [IF NOT EXISTS] col_name col_type
-- Column 삭제
ALTER TABLE 테이블명 REPLACE COLUMNS(남길_열_이름 데이터타입, 남길_열_이름, 데이터타입);

-- Column 삭제하기
ALTER TABLE table_name REPLACE COLUMNS(col_name col_type, col_name col_type)