Hive 配置单元仅插入事务表

Hive 配置单元仅插入事务表,hive,hdp,Hive,Hdp,使用配置单元仅插入事务表的具体好处是什么?大多数文档只是指出,如果不需要删除或更改功能,则创建此表。这会加快处理速度吗?减少开销 目前,仅支持ORC文件格式的完整ACID表。微观管理,也称为仅插入事务表,支持任何其他存储格式 因此,如果您的所有表都以ORC格式存储,则可以继续使用full ACID。如果您有其他存储类型,并且需要能够执行INSERT语句,微管理表可以帮助您实现这一点 另外:对于完整的ACID表,压缩是通过MapReduce作业完成的。您可以将配置单元配置为使用基于查询的压缩程序进

使用配置单元仅插入事务表的具体好处是什么?大多数文档只是指出,如果不需要删除或更改功能,则创建此表。这会加快处理速度吗?减少开销

目前,仅支持ORC文件格式的完整ACID表。微观管理,也称为仅插入事务表,支持任何其他存储格式

因此,如果您的所有表都以ORC格式存储,则可以继续使用full ACID。如果您有其他存储类型,并且需要能够执行INSERT语句,微管理表可以帮助您实现这一点

另外:对于完整的ACID表,压缩是通过MapReduce作业完成的。您可以将配置单元配置为使用基于查询的压缩程序进行主要压缩(如在创建新基时),但次要压缩(如在合并增量文件时)仍使用MR进行,并且仅使用MR。 对于微观管理的表,压缩是基于查询的。所以,如果你在Tez上使用Hive,或者在Spark上使用Hive,而你根本不想拥有MR,那就好了。但是对于完整的ACID表,如果您需要较小的压缩,则需要MapReduce


内幕提示:基于查询的完整ACID表小型压缩将很快得到支持,我很确定Parquet将很快支持ACID表。

目前,仅支持ORC文件格式的完整ACID表。微观管理,也称为仅插入事务表,支持任何其他存储格式

因此,如果您的所有表都以ORC格式存储,则可以继续使用full ACID。如果您有其他存储类型,并且需要能够执行INSERT语句,微管理表可以帮助您实现这一点

另外:对于完整的ACID表,压缩是通过MapReduce作业完成的。您可以将配置单元配置为使用基于查询的压缩程序进行主要压缩(如在创建新基时),但次要压缩(如在合并增量文件时)仍使用MR进行,并且仅使用MR。 对于微观管理的表,压缩是基于查询的。所以,如果你在Tez上使用Hive,或者在Spark上使用Hive,而你根本不想拥有MR,那就好了。但是对于完整的ACID表,如果您需要较小的压缩,则需要MapReduce


内幕提示:基于查询的对完整ACID表的小型压缩很快就会得到支持,我敢肯定Parquet很快就会支持ACID表。

您到处都能看到的是,与完整事务表不同,“仅插入事务表”只支持数据插入操作

但这并不能说明什么。人们想知道的是: 什么是事务性插入操作

说一个操作是一个事务,基本上意味着它遵循ACID原则,尤其是它最重要的属性:原子性(ACID中的a)。 在他的巨著《设计数据密集型应用程序》中,Martin Kleppmann很好地解释了原子性属性:

“如果事务被中止,应用程序可以确保 没有更改任何内容,因此可以安全地重试。 ACID原子性的定义功能是在出现错误时中止事务并丢弃该事务中的所有写入。”


在配置单元中,这是通过为每个插入事务创建一个增量目录来完成的,该目录将在事务完成之前隔离新数据。如果出现错误,目录将被删除,否则将被追加。

您在任何地方都可以看到,与完整的事务表不同,“仅插入事务表”仅支持数据插入操作

但这并不能说明什么。人们想知道的是: 什么是事务性插入操作

说一个操作是一个事务,基本上意味着它遵循ACID原则,尤其是它最重要的属性:原子性(ACID中的a)。 在他的巨著《设计数据密集型应用程序》中,Martin Kleppmann很好地解释了原子性属性:

“如果事务被中止,应用程序可以确保 没有更改任何内容,因此可以安全地重试。 ACID原子性的定义功能是在出现错误时中止事务并丢弃该事务中的所有写入。”

在配置单元中,这是通过为每个插入事务创建一个增量目录来完成的,该目录将在事务完成之前隔离新数据。如果出现错误,则删除目录,否则追加目录