[HIVE] 기초 문법 정리
반응형
[ 공통 사항 ]
IF EXISTS : xx가 존재하면 적용
데이터 조회
SELECT ~ FROM :: 데이터 조회
-- 데이터 조회
SELECT * FROM my_table -- 전체 데이터 조회
SELECT col_1, col_2 FROM my_table -- 열 지정하여 데이터 조회
WHERE :: 조건 지정하여 데이터 조회
-- 조건 지정하여 데이터 조회
SELECT *
FROM my_table
WHERE col_1 >= 10 -- 조건
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 :: GROUP BY된 집계에 조건 적용
-- 집계
SELECT col_1, count(col_2) as num_count -- as : 조회될 때 별칭 지정
FROM my_table
GROUP BY col_1
HAVING count(col_2) >= 10
데이터베이스
데이터베이스 조회
-- 데이터베이스 조회
SHOW DATABASES;
데이터베이스 생성
-- 데이터베이스 생성
CREATE DATABASE db_name;
CREATE DATABASE IF NOT EXISTS db_name; -- 존재하지 않으면 DB 생성
CREATE DATABASE db_name LOCATION '/user/hive/mizykk'; -- 위치지정
데이터베이스 정보 조회
-- 데이터베이스 정보 조회
DESCRIBE DATABASE db_name;
테이블
테이블 목록 조회
-- 테이블 조회
SHOW TABLES;
테이블 생성
코멘트, 위치지정, 파티션 지정 등은 선택 가능하다.
-- 테이블 생성
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 조회하기
SHOW PARTITIONS db_name.table_name;
특정 파티션의 정보
-- 특정 Partition의 정보 보기 (ex. location)
SHOW table extended like 'db_name.table_name' partition (dt='20210531');
파티션 삭제
-- 테이블 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
열 이름 변경
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
열 추가
ALTER TABLE 테이블명 ADD COLUMNS (추가할_열 데이터타입, 추가할_열 데이터타입);
-- Column 추가하기
ALTER TABLE table_name ADD [IF NOT EXISTS] COLUMNS (col_name col_type[, col_spec ...])
ALTER TABLE db.items ADD COLUMNS (item_count_min BIGINT, item_count_max BIGINT); -- Example
ALTER TABLE table_name ADD COLUMN [IF NOT EXISTS] col_name col_type
열 삭제
ALTER TABLE 테이블명 REPLACE COLUMNS(남길_열_이름 데이터타입, 남길_열_이름, 데이터타입);
-- Column 삭제하기
ALTER TABLE table_name REPLACE COLUMNS(col_name col_type, col_name col_type)
728x90
'SQL > HIVE' 카테고리의 다른 글
[HIVE] map에 있는 key 조회하기 (0) | 2021.11.15 |
---|---|
[HIVE] 날짜 더하기 & 빼기 :: date_add, date_sub (0) | 2021.04.13 |
[HIVE] 테이블 만들기 :: CREATE TABLE (0) | 2021.01.26 |
[HIVE] 테이블 삭제하기 :: DROP TABLE (0) | 2020.11.26 |
[HIVE] date_format 다루기 :: 날짜함수 (0) | 2020.11.10 |
Comments