更新/删除不使用 AcidOutputFormat 或未分桶的表
Posted
技术标签:
【中文标题】更新/删除不使用 AcidOutputFormat 或未分桶的表【英文标题】:Update/delete on table that does not use AcidOutputFormat or not bucketed 【发布时间】:2017-09-04 19:16:20 【问题描述】:我已经使用以下属性更新了 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 [错误 10297]:尝试进行更新或 删除不使用的表employee_det.employee_basic AcidOutputFormat 或未分桶
【问题讨论】:
你的表存储格式是? 行格式表 存储为...? 【参考方案1】:根据给定的详细信息,您似乎已启用 Hive ACID
。
对于ACID
,支持表需要为ORC
格式并启用存储桶。
我看到您已启用存储桶,但不确定表格是否为 ORC
格式。使用 show create table
检查表定义,以了解它是否满足上述条件。
查看更多详情 https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions
【讨论】:
【参考方案2】:"此第一个版本仅支持 ORC 文件格式。该功能 已构建使得任何存储都可以使用事务 可以确定更新或删除如何应用于基本记录的格式 (基本上,它具有显式或隐式行 id),但到目前为止 只为 ORC 完成了集成工作。”
https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions
【讨论】:
以上是关于更新/删除不使用 AcidOutputFormat 或未分桶的表的主要内容,如果未能解决你的问题,请参考以下文章
使用 jquery.dataTables 从 observableArray 中删除项目后 UI 不更新