Hive 3.1.3 기준입니다.

Update, Delete등의 질의를 사용하기위해 Hive에 트랜잭션을 설정하겠습니다.

 

// 영구 적용을 위한 hive_site.xml 설정 값 추가
vi ${HIVE_HOME}/conf/hive-site.xml

        <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>
        <property>
                <name>hive.compactor.initiator.on</name>
                <value>true</value>
        </property>
        <property>
                <name>hive.compactor.worker.threads</name>
                <value>2</value>
        </property>

저장 후 hive 재기동 필요

 

update, delete 테스트

// hive 콘솔 진입
hive

// DB 생성 및 테이블 생성
create database test;
create table test.myOrcTable (col1 string, col2 string) STORED AS ORC TBLPROPERTIES ('transactional' = 'true');

// INSERT
insert into test.myOrcTable values ('1', 'a');
insert into test.myOrcTable values ('2', 'b');

// UPDATE
update test.myOrcTable set col2 = 'c' where col2 = 'b';

// SELECT 확인, 'b' 였던 col2가 'c'로 변경되었는지 확인
select * from test.myOrcTable

// DELETE
delete from test.myOrcTable where col2 = 'a';

// SELECT 확인, col2가 'a'인 행이 삭제되고, 'c' 인 행만 남아있는지 확인
select * from test.myOrcTable

 

 

감사합니다.

반응형

+ Recent posts