如何禁用Hive表的事务?

时间:2019-06-26 14:25:01

标签: hive

我有一个最初创建为事务型的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

2 个答案:

答案 0 :(得分:0)

根据documentation更改TBLPROPERTIES(“ transactional” =“ false”),是不允许的。

您可以重新创建表。

首先进行表备份:

create table bkp_table as 
select * from your_table;

然后删除表并再次创建不具有transactional属性的表。从备份中重新加载数据。

或创建一个新表,从旧表中加载数据,删除旧表,重命名新表。

答案 1 :(得分:0)

您必须重新创建表。

如果需要,请先备份表。然后,x0 = 69 x1 = 174 y0 = 0.0000296 y1 = 0.0001652 m = (log10(y1) - log10(y0)) / (x1 - x0) k = y0 / pow(10, m * x0) y = k * pow(10, m * bar_index) plot(y)

使用 DROP TABLE 创建表

TBLPROPERTIES ( 'transactional'='false' )

您可以选择输入和输出格式