Hadoop 하둡에서 데이터베이스, 테이블, 데이터 다루기

2022. 10. 23. 01:49Programming

728x90

1. DATABASE 생성/제거하기

1.1 DB 생성하기

# DB의 이름을 cust_dm으로 생성
CREATE DATABASE cust_dm;
CREATE DATABASE IF NOT EXISTS cust_dm;

1.2 DB 제거하기

# cust_dm 제거
DROP DATABASE cust_dm;
DROP DATABASE IF EXISTS cust_dm; 

2. TABLE 생성/제거하기

2.1 TABLE 생성하기

#impala
CREATE TABLE cust_dm.table1(
  id_val INT,
  cust_key STRING,
  value1 decimal(5,4),
  tmstmp TIMESTAMP
)
ROW FORMAT DELIMITED         #table 구분 세팅
FIELDS TERMINATED BY ','     #seperator를 , 로 세팅
STORED as TEXTFILE           #option1: TEXTFILE|SEQUENCEFILE|...
LOCATION ‘/cust_dm/table1’;  #option2: 데이터경로 지정

외부에서 데이터 읽어오기

CREATE EXTERNAL TABLE cust_dm.table2
(   
  id_val INT,
  cust_key STRING,
  value1 decimal(5,4),
  tmstmp TIMESTAMP 
)
LOCATION ‘/cust_dm/table2‘; 

기존 table의 조회 결과를 사용

CREATE TABLE cust_dm.table1_sub AS
SELECT id_val, value1, tmstmp
FROM cust_dm.table1
WHERE cust_key = ‘VIP’ ;

기존의 테이블 스키마 활용

CREATE TABLE cust_dm.table3 LIKE cust_dm.table1

2.2 TABLE 제거하기

table 지우기 (복구 가능)

DROP TABLE IF EXISTS cust_dm.table1 [PURGE];

table 지우기 (복구 불가)

DROP TABLE IF EXISTS cust_dm.table1 PURGE;

3. 테이블, 데이터 탐색

SHOW TABLES;
DESCRIBE cust_dm.table1;
DESCRIBE FORMATTED cust_dm.table1;

 

728x90

4. 데이터 삽입, 삭제, 수정

4.1 데이터 삽입

INSERT INTO cust_dm.table1
VALUES (123, 'key1', 1.1234, current_timestamp());

컬럼명시 & 다수 데이터 삽입

INSERT INTO cust_dm.table1 (id_val, cust_key, value1, tmstmp)
VALUES (123, 'key1', 1.1234, current_timestamp()),
           (456, 'key2', 0.9652, current_timestamp()),
           (123, 'key1', 0.0001, current_timestamp());

부분 컬럼 삽입 or Null 삽입

#value1에는 null 값이 들어감
INSERT INTO cust_dm.table1 (id_val, cust_key, tmstmp)
VALUES (123, 'key1', current_timestamp());
#value1에는 null 값이 들어감
INSERT INTO cust_dm.table1 (id_val, cust_key, value1, tmstmp)
VALUES (123, 'key1', Null, current_timestamp());

4.2 삭제

delete from cust_dm.table1
where id_val = 456;

table을 유지하고 모든 데이터를 삭제

delete from cust_dm.table1;

4.3 수정(업데이트)

UPDATE cust_dm.table1
SET value1 = 0.000
WHERE id_val = 123;

다수 값 수정

UPDATE cust_dm.table1
SET value1 = 0.000,
        cust_key = 'key8'
WHERE id_val = 123;

다른 table의 값을 로드해서 수정

UPDATE table1
SET value1 = original_tb.value1,
        cust_key = original_tb.cust_key
FROM original_table as original_tb
WHERE table1.id_val = origianl_tb.id_val;
반응형