我有一个最初作为事务创建的 Hive 表,但我想禁用表上的事务,因为它们实际上并不需要。
我尝试使用 ALTER TABLE
禁用它们,但出现错误:
hive> ALTER TABLE foo SET TBLPROPERTIES('transactional'='false');
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter table. TBLPROPERTIES with 'transactional'='true' cannot be unset
我正在使用 Hive 2.3.2
最佳答案
根据documentation不允许更改 TBLPROPERTIES ("transactional"="false")。
您可以重新创建表。
先做表备份:
create table bkp_table as
select * from your_table;
然后删除表并在没有 transactional
属性的情况下重新创建。从备份重新加载数据。
或者创建一个新表,从旧表加载数据,删除旧表,重命名新表。
https://stackoverflow.com/questions/56775112/