蜂巢插入中途失败时会发生什么?

问题描述

假设一个插入预期将在蜂巢中加载100条记录,并且已插入40条记录,并且由于某种原因插入失败。事务将完全回滚,并撤消插入的40条记录吗? 或即使在插入查询失败后,我们也会在配置单元表中看到40条记录吗?

解决方法

该操作是原子性的:如果使用HiveQL插入或重写数据,则它将数据写入临时位置,并且只有在命令成功后,文件才会移动到表位置(如果使用INSERT OVERWRITE,则会删除旧文件) 。如果SQL语句失败,则数据将保持语句执行之前的状态。

还请阅读本文档,以了解有关在并发模式下支持哪些ACID功能和限制的更多详细信息:What is ACID and why should you use it?

直到Hive 0.13为止,在分区级别提供了原子性,一致性和持久性。可以通过打开一种可用的锁定机制(ZooKeeper或内存中)来提供隔离。通过在Hive 0.13中添加事务,现在可以在行级别提供完整的ACID语义,以便一个应用程序可以添加行,而另一个应用程序可以从同一分区读取数据,而不会互相干扰。

也请阅读有关Hive locks with ACID enabled (transactional and non-transactional tables)

的内容

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...