在Hive

时间:2016-06-14 03:02:04

标签: hadoop hive

我正在经历“编程蜂巢”并找到了以下内容。

Hive offers no support for rowlevel
inserts, updates, and deletes. Hive doesn’t support transactions.

但是在CDH5上我可以在我的表中添加一行。但更新和删除会将错误抛出为“语义错误”。我读到可以在配置单元上设置ACID属性,但它不起作用。

  

问题:我们可以更新和删除配置单元中的记录吗?

1 个答案:

答案 0 :(得分:0)

Hive不适用于OLTP,但现在它支持ACID操作,您必须为其更改一些配置。如需尝试,请执行以下操作:

    set hive.support.concurrency = true;
    set hive.enforce.bucketing = true;
    set hive.exec.dynamic.partition=true;
    set hive.exec.dynamic.partition.mode = nonstrict;

ACID交易(插入,更新和删除)

  • 步骤1 create table testTableNew(id int ,name string ) clustered by (id) into 2 buckets stored as orc TBLPROPERTIES('transactional'='true');

  • 步骤2 insert into table testTableNew values (1,'row1'),(2,'row2'),(3,'row3');

  • 第3步update testTableNew set name = 'updateRow2' where id = 2;

  • 步骤4 delete from testTableNew where id = 1;