Trun On ACID(Detlete & Update) On Hive

本文详细介绍了如何在Hive中开启事务支持,包括配置hive-site.xml文件、处理数据库升级和表结构要求。重点讲解了设置并发支持、事务管理器以及表的ORC存储、分区和事务属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

序言

默认我们搭建起来的Hive或者SparkSql都是不支持事务的.需要相应的配置才能开启Hive的事务.

同时Hive的Delete和Update也是需要先开启ACID才能支持的cuiyaonan2000@163.com.

参考地址:

  1. ​​​​​​LanguageManual DML - Apache Hive - Apache Software Foundation
  2. Hive Transactions - Apache Hive - Apache Software Foundation

 

 配置文件

还是针对hive-site.xml进项额外的配置即可

<!-- 指示Hive是否支持并发。为了支持insert、updadte、delete事务,该值需要设置为true。-->
<property>
    <name>hive.support.concurrency</name>
    <value>true</value>
</property>

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


<!-- 
设置成true则可以动态的去生成分区
如果设置为strict,向分区表装在数据时,为了防止用户意外覆盖所有分区,必须指定至少一个静态分区。如果设置成nonstrict,则所有分区都允许动态生成,该值需要设置为true。-->
<property>
    <name>hive.exec.dynamic.partition.mode</name>
    <value>nonstrict</value>
</property>

<!--hive的锁管理器  -->
<property>
    <name>hive.txn.manager</name>
    <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property>

<!--是否在metastore实例上运行initiator和cleaner进程。-->
<property>
    <name>hive.compactor.initiator.on</name>
    <value>true</value>
</property>

<!-- 设置有多少工作线程在Thrift metastore实例上运行 -->
<property>
    <name>hive.compactor.worker.threads</name>
    <value>1</value>
</property>

数据库

如果你是在已经初始化的metastore上启用ACID则需要执行hive目录/soft/hadoop/apache-hive-3.1.2-bin/scripts/metastore/upgrade/mysql 下找到如下的文件在mysql的数据库中执行cuiyaonan2000@163.com

 

如果是还没初始化数据库则,在配置完hive-site.xml后,直接执行初始化数据库就行了.命令如下:

schematool -dbType mysql -initSchema

Table的相关设置

 通过官网和网友们的翻译我们了解到table必须满足如下的要求才能支持事务和delete与update.

  1.  

翻译如下

  1. 表的存储格式必须是ORC(STORED AS ORC);
  2. 表必须进行分桶(CLUSTERED BY (col_name, col_name, ...)  INTO num_buckets BUCKETS);
  3. Table property中参数transactional必须设定为True(tblproperties('transactional'='true'));

官网的示例:

CREATE TABLE table_name (
  id                int,
  name              string
)
CLUSTERED BY (id) INTO 2 BUCKETS STORED AS ORC
TBLPROPERTIES ("transactional"="true",
  "compactor.mapreduce.map.memory.mb"="2048",     -- specify compaction map job properties
  "compactorthreshold.hive.compactor.delta.num.threshold"="4",  -- trigger minor compaction if there are more than 4 delta directories
  "compactorthreshold.hive.compactor.delta.pct.threshold"="0.5" -- trigger major compaction if the ratio of size of delta files to
                                                                   -- size of base files is greater than 50%
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuiyaonan2000

给包烟抽吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值