微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决蜂巢插入中途失败时会发生什么?

假设一个插入预期将在蜂巢中加载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)

的内容

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。