更新/删除不使用AcidOutputFormat或未使用AcidOutputFormat的表

时间:2017-09-04 19:16:21

标签: hadoop hive hiveql

我已使用以下属性更新了hive-site.xml文件:

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;

我正在尝试使用以下命令更新表:

update employee_basic set dept = 'IT';

但收到错误:

  

FAILED:SemanticException [错误10297]:尝试进行更新或   删除不使用的表employee_det.employee_basic   AcidOutputFormat或没有被删除

2 个答案:

答案 0 :(得分:1)

根据给定的详细信息,看起来您启用了Hive ACID

对于ACID支持表,需要采用ORC格式并启用存储区。

我看到您启用了存储分区但不确定表是否为ORC格式。使用show create table检查表定义,以了解它是否满足上述条件。

详情请见 https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions

答案 1 :(得分:0)

  

“此第一个版本仅支持ORC文件格式。此功能   已构建为可以由任何存储使用事务   可以确定更新或删除如何应用于基本记录的格式   (基本上,它有一个显式或隐式的行id),但到目前为止   整合工作只针对ORC进行。“

     

https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions