对不使用acidoutputformat或未使用Bucked的表进行更新/删除

8wigbo56  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(270)

我已用以下属性更新了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';

但是得到错误:
失败:semanticexception[error 10297]:尝试对不使用acidoutputformat或未绑定的表employee\u det.employee\u basic执行更新或删除

lh80um4z

lh80um4z1#

“在第一个版本中只支持orc文件格式。该功能的构建使得任何存储格式都可以使用事务,这些存储格式可以确定如何将更新或删除应用于基本记录(基本上,具有显式或隐式行id),但到目前为止,集成工作仅针对orc完成。”
https://cwiki.apache.org/confluence/display/hive/hive+transactions

p5cysglq

p5cysglq2#

根据给定的详细信息,看起来您已经启用了配置单元 ACID .
为了 ACID 需要支撑台 ORC 已启用格式和存储桶。
我看到您启用了bucket,但不确定表是否在 ORC 格式。使用检查表定义 show create table ,以了解它是否满足上述条件。
有关详细信息,请参阅https://cwiki.apache.org/confluence/display/hive/hive+transactions

相关问题