Hive实现update和delete

北城余情 提交于 2020-05-07 13:21:47

业务需求,要CDH版HIVE支持update和delete(参考如下文章,完美成功)

https://blog.csdn.net/xueyao0201/article/details/79387647

 

例如:

-- 建立非分区表并加载数据
CREATE TABLE t1 (id INT, name STRING, cty STRING, st STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';  
LOAD DATA LOCAL INPATH '/home/grid/a.txt' INTO TABLE t1;  
SELECT * FROM t1;

-- 建立外部分区事务表并加载数据
CREATE EXTERNAL TABLE t2 (id INT, name STRING) PARTITIONED BY (country STRING, state STRING)
CLUSTERED BY (id) INTO 8 BUCKETS
STORED AS ORC TBLPROPERTIES ('transactional'='true');
INSERT INTO T2 PARTITION (country, state) SELECT * FROM T1;
SELECT * FROM t2;

-- 修改数据
INSERT INTO TABLE t2 PARTITION (country, state) VALUES (5,'刘','DD','DD');
UPDATE t2 SET name='张' WHERE id=1;
DELETE FROM t2 WHERE name='李四';
SELECT * FROM t2;

问题:

解决:Dynamic partition strict mode requires at least one static partition column. To turn this off set

 

在hive表中通过子查询插入数据到分区表时报的错误:

FAILED: SemanticException [Error 10096]: Dynamic partition strict mode requires at least one static partition column. To turn this off set hive.exec.dynamic.partition.mode=nonstrict

因为要做动态分区, 所以要先设定partition参数
由于default是false, 需要额外下指令打开这个开关
default是strick, 表示不允许动态分区, 所以要改成nostrick

解决方法:
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nostrick;
 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!