250x250
반응형
arkhyeon
arkhyeon
arkhyeon
전체 방문자
오늘
어제
  • 분류 전체보기 (88)
    • Spring (5)
    • Java (4)
    • React (25)
      • TypeScript (6)
      • JavaScript (1)
      • Jest (9)
    • NEXT (8)
    • SQL (1)
    • React native (1)
    • CSS (3)
    • Web (1)
    • Git (3)
    • ETC (6)
    • 빅데이터DB (8)
    • Docker (4)
    • Tool (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • react loading
  • usetransition
  • react usetransition
  • kudu
  • Spring WebSocket
  • node WebSocket
  • jest
  • docker tomcat
  • WSS
  • javasciprt websocket
  • websocket
  • react
  • react spring websocket
  • HIVE
  • react websocket
  • react jest
  • react19
  • websocket server
  • react typescript
  • javascript wss

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
arkhyeon

arkhyeon

빅데이터DB

Hive Create Update Delete Select Table

2024. 1. 23. 14:53
728x90
반응형

하이브 서버에서 테이블 생성

$ docker exec -it [하이브서버] bash

# 하이브 실행
# hive

# 테이블 생성
hive> CREATE TABLE if not exists default.person(
    >       pid      INT,
    >       name     STRING,
    >       language STRING,
    >       gender   STRING
    > )
    > CLUSTERED BY (pid) into 1 BUCKETS
    > STORED AS ORC
    > LOCATION 'hdfs://[네임노드 이름]:[포트]/[폴더명]'
    > TBLPROPERTIES('transactional'='true');
OK
Time taken: 1.378 seconds
  • CLUSTERED BY (pid) into 1 BUCKETS
    테이블은 pid라는 열을 기준으로 클러스터링되며, 버킷의 수는 1개입니다. 이는 테이블의 데이터를 효율적으로 저장하고 쿼리 성능을 향상시키는 데 도움이 됩니다.
  • STORED AS ORC
    테이블의 데이터는 ORC(Optimized Row Columnar) 형식으로 저장됩니다. ORC는 Hadoop 데이터를 저장하고 처리하는 데 최적화된 형식입니다.
  • LOCATION 'hdfs://[네임노드 이름]:[포트]/[폴더명]'
    테이블의 데이터는 HDFS(Hadoop Distributed File System)의 지정된 위치에 저장됩니다.
  • TBLPROPERTIES('transactional'='true')
    테이블은 ACID(Atomicity, Consistency, Isolation, Durability) 트랜잭션을 지원하도록 설정됩니다. 이는 Hive에서 UPDATE 또는 DELETE 작업을 수행할 수 있게 합니다.

Hive 테이블 Insert

INSERT INTO table person VALUES
(1, 'Sioux Clarey', 'Thai', 'Female'),
(2, 'Celine Bowbrick', 'Luxembourgish', 'Female'),
(3, 'Kiri Ebbetts', 'Malay', 'Female'),
(4, 'Seward Heinritz', 'French', 'Male'),
(5, 'Enriqueta Ruf', 'Malay', 'Female'),
(6, 'Barth Hub', 'Kazakh', 'Male'),
(7, 'Scot Tilliard', 'Amharic', 'Genderfluid'),
(8, 'Hortense Rishworth', 'Afrikaans', 'Female'),
(9, 'Karil Bramsen', 'Kyrgyz', 'Female'),
(10, 'Rafaellle Goosnell', 'Hungarian', 'Male');

Hive 테이블 Select

hive> select * from person;
OK
10	Rafaellle Goosnell	Hungarian	Male
9	Karil Bramsen	Kyrgyz	Female
8	Hortense Rishworth	Afrikaans	Female
7	Scot Tilliard	Amharic	Genderfluid
6	Barth Hub	Kazakh	Male
5	Enriqueta Ruf	Malay	Female
4	Seward Heinritz	French	Male
3	Kiri Ebbetts	Malay	Female
2	Celine Bowbrick	Luxembourgish	Female
1	Sioux Clarey	Thai	Female
Time taken: 0.1 seconds, Fetched: 10 row(s)

Hive 테이블 Update

hive> update person set language = 'Korean' where pid = 2;
...
Log 중략
...
OK
Time taken: 1.583 seconds
# 조회 시 PID = 2 language = korean 으로 변경 확인
hive> select * from person;
OK
10	Rafaellle Goosnell	Hungarian	Male
9	Karil Bramsen	Kyrgyz	Female
8	Hortense Rishworth	Afrikaans	Female
7	Scot Tilliard	Amharic	Genderfluid
6	Barth Hub	Kazakh	Male
5	Enriqueta Ruf	Malay	Female
4	Seward Heinritz	French	Male
3	Kiri Ebbetts	Malay	Female
2	Celine Bowbrick	Korean	Female
1	Sioux Clarey	Thai	Female
Time taken: 0.102 seconds, Fetched: 10 row(s)

Hive 테이블 Delete

hive> delete from person where pid = 7;
...
Log 중략
...
OK
Time taken: 1.705 seconds
// pid = 7 삭제 확인
hive> select * from person;
OK
10	Rafaellle Goosnell	Hungarian	Male
9	Karil Bramsen	Kyrgyz	Female
8	Hortense Rishworth	Afrikaans	Female
6	Barth Hub	Kazakh	Male
5	Enriqueta Ruf	Malay	Female
4	Seward Heinritz	French	Male
3	Kiri Ebbetts	Malay	Female
2	Celine Bowbrick	Korean	Female
1	Sioux Clarey	Thai	Female
Time taken: 0.113 seconds, Fetched: 9 row(s)

트러블 슈팅 - 업데이트, 삭제 에러

set hive.support.concurrency = true;
set hive.enforce.bucketing = true;
set hive.exec.dynamic.partition.mode = nonstrict;
set hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
set hive.compactor.initiator.on = true;
set hive.compactor.worker.threads =1;
  • set hive.support.concurrency = true;
    동시성을 지원해 여러 쿼리를 동시 실행할 수 있도록 합니다. 여러 사용자가 동시에 쿼리를 실행하거나, 여러 쿼리가 동일한 테이블에 접근할 때 유용합니다 .
  • set hive.enforce.bucketing = true;
    버킷팅을 강제해 테이블을 버킷으로 분할하도록 합니다. 데이터를 효율 저장 및 쿼리 성능을 향상에 도움이 됩니다.
  • set hive.exec.dynamic.partition.mode = nonstrict;
    동적 파티셔닝 모드를 nonstrict로 설정해 동적 파티셔닝을 엄격하게 적용하지 않도록 합니다. 동적 파티셔닝은 파티션 열의 값이 쿼리 시점에 결정되는 경우에 유용합니다.
  • set hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
    DBTxnManager를 트랜잭션 관리자로 사용해 ACID 트랜잭션을 지원하도록 합니다.
  • set hive.compactor.initiator.on = true;
    컴팩터를 실행하도록 설정해 데이터를 압축하고 효율적으로 저장하도록 합니다 .
  • set hive.compactor.worker.threads =1;
    컴팩터 작업을 실행하는 작업 스레드의 수를 설정합니다. 이 값을 늘리면 컴팩션 작업이 빨리 완료될 수 있지만, 많은 리소스를 소비하게 됩니다.
728x90
반응형

'빅데이터DB' 카테고리의 다른 글

Kudu 독립적인 데이터베이스 사용  (1) 2024.02.01
Presto JDBC 연결  (1) 2024.01.23
Single Store JDBC 연결  (0) 2024.01.23
Hive Create External Table  (1) 2024.01.23
Hive JDBC 연결  (0) 2024.01.23
    '빅데이터DB' 카테고리의 다른 글
    • Presto JDBC 연결
    • Single Store JDBC 연결
    • Hive Create External Table
    • Hive JDBC 연결
    arkhyeon
    arkhyeon

    티스토리툴바