CDH版本先進入Hive配置頁
選擇高級,找到hive-site.xml 的 Hive 客戶端高級配置代碼段
配置項
點擊+號,增長以下配置項sql
hive.support.concurrency = true hive.enforce.bucketing = true hive.exec.dynamic.partition.mode = nonstrict hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DbTxnManager hive.compactor.initiator.on = true hive.compactor.worker.threads = 1
而後點擊保存更改,分發配置就能夠了。數據庫
若是要支持delete和update,則必須輸出是AcidOutputFormat而後必須分桶。
並且目前只有ORCFileformat支持AcidOutputFormat,不只如此建表時必須指定參數('transactional' = true)
如apache
USE test;DROP TABLE IF EXISTS S1_AC_ACTUAL_PAYDETAIL;CREATE TABLE IF NOT EXISTS S1_AC_ACTUAL_PAYDETAIL(INPUTDATE STRING,SERIALNO STRING,PAYDATE STRING,ACTUALPAYDATE STRING,CITY STRING,PRODUCTID STRING,SUBPRODUCTTYPE STRING,ISP2P STRING,ISCANCEL STRING,CDATE STRING,PAYTYPE STRING,ASSETSOWNER STRING,ASSETSOUTDATE STRING,CPD DOUBLE,PAYPRINCIPALAMT BIGINT,PAYINTEAMT BIGINT,A2 BIGINT,A7 BIGINT,A9 BIGINT,A10 BIGINT,A11 BIGINT,A12 BIGINT,A17 BIGINT,A18 BIGINT,PAYAMT BIGINT,LOANNO STRING,CREATEDATE STRING,CUSTOMERID STRING,etl_in_dt string)CLUSTERED BY (SERIALNO) --根據某個字段分桶INTO 7 BUCKETS --分爲多少個桶ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','LINES TERMINATED BY '\n'STORED AS ORCLOCATION '/user/hive/test/S1_AC_ACTUAL_PAYDETAIL' TBLPROPERTIES('transactional'='true');--增長額描述信息,好比最後一次修改信息,最後一個修改人。
注:因爲cdh自動的在元數據裏面建立了COMPACTION_QUEUE表,因此博客中說的那個問題不存在
oop
執行測試
update test.S1_AC_ACTUAL_PAYDETAIL set city='023' where SERIALNO = '20688947002';
操做100條數據,平均每條花費2秒多,其中執行花費1秒左右。相對仍是能接受的。ui
delete from test.S1_AC_ACTUAL_PAYDETAIL where SERIALNO = '20688947002';