BIGDATA/HIVE
Hive ACID 적용 방법
옥토캣
2023. 10. 27. 10:29
Hive에 update를 위한 설정 방법
- hive 버전 : 3.1.2
- hive-site.xml 설정 추가
<property>
<name>hive.compactor.initiator.on</name>
<value>true</value>
</property>
<property>
<name>hive.compactor.worker.threads</name>
<value>10</value>
</property>
<property>
<name>hive.support.concurrency</name>
<value>true</value>
</property>
<property>
<name>hive.enforce.bucketing</name>
<value>true</value>
</property>
<property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
</property>
<property>
<name>hive.txn.manager</name>
<value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property>
- hive.compactor.initiator.on
- Compactor 활성화
- ACID table 정리와 압축 기능 수행
- hive.compactor.worker.threads
- Compactor의 작업 스레드 수 설정
- hive.support.concurrency
- 병행처리 활성화
- 사용자가 동시에 쿼리를 실행할 수 있게 지원
- hive.enforce.bucketing
- 데이터 버켓팅을 강제화
- 테스트 결과 버켓팅 설정을 안 한 테이블도 생성이 됨 ?? 확인 필요 ??
- hive.exec.dynamic.partition.mode
- 동적 파티션 삽입 모드 지정
- nonstrict로 설정 시 자동으로 파티션을 생성하고, 오버라이딩 지원
- hive.txn.manager
- 트랜잭션 관리 매니저 지정
- 정확한 기능은 확인 필요
- 테스트 테이블 생성
- bucket 설정을 해주고 transactional 설정을 해준다
- 트랜잭션 테이블은 ORC 포맷으로 생성해야 한다
- 버킷으로 설정된 컬럼은 UPDATE 할수 없다
CREATE TABLE acid_test (
id int,
name string
)
CLUSTERED BY (id) INTO 2 BUCKETS STORED AS ORC
TBLPROPERTIES ("transactional"="true",
"compactor.mapreduce.map.memory.mb"="2048", -- specify compaction map job properties
"compactorthreshold.hive.compactor.delta.num.threshold"="4", -- trigger minor compaction if there are more than 4 delta directories
"compactorthreshold.hive.compactor.delta.pct.threshold"="0.5" -- trigger major compaction if the ratio of size of delta files to
-- size of base files is greater than 50%
);