7.20解决hive无法删除和修改的问题

参考文献:hive update和delete报错Attempt to do update or delete using transaction manager-CSDN博客

 

首先说明,hive数据库一般是增和查询用得比较多,不建议频繁的去修改删除,有悖hive数据库的初衷。

废话不多说,开始配置,首先找到你的hive-site.xml的路径

 一般来说是在hive的conf目录下,打开编辑它

 加入以下代码:

 

<!-- 删除和修改 -->
<property>
<name>hive.support.concurrency</name>
<value>true</value>
</property>

<property>
<name>hive.enforce.bucketing</name>
<value>true</value>
</property>

<property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
</property>

<property>
<name>hive.txn.manager</name>
<value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property>

<property>
<name>hive.compactor.initiator.on</name>
<value>true</value>
</property>

<property>
<name>hive.compactor.worker.threads</name>
<value>1</value>
</property>

<property>
<name>hive.compactor.worker.threads</name>
<value>1</value>
</property>

<property>
<name>hive.in.test</name>
<value>true</value>
</property>



修改文件后重启你的hive,可以参考连师傅的hadoop(1) - 连师傅只会helloword - 博客园 (cnblogs.com)


重启完成后开始测试
先找到你的数据库,我这里的数据库的名字是itheima,记得更改
use itheima;
输入建表语句,创建student表
create table student(
  id int,
  name String,
  sex varchar(2),
  birthday varchar(10),
  major varchar(1)
)clustered by (id) into 2 buckets stored as orc TBLPROPERTIES('transactional'='true');

然后输入插入语句itheima是数据库名字,student是表名
INSERT INTO itheima.student (id, name, sex, birthday, major) VALUES (1, '1', '1', '1', '1');
插入后会出现加载的信息等待加载完成

 

 加载完成会有个ok,我们输入

select * from student

查一下插入成功没有,可以看到是成功了的

 

然后尝试更改 语句

hive> update student set name='beijing' where id=1;

还是会加载,等待加载完成,还是ok

 那么这样之后这个student表就可以删除和修改了,有问题我会发在之后的博客里。



posted on 2024-07-20 10:28  HA_wind  阅读(30)  评论(1编辑  收藏  举报

导航