Hive查询语言中的主键和索引可以吗?

2023-12-11

我们正在尝试将 oracle 表迁移到 hive 并对其进行处理。 目前oracle中的表有primary key,foreign key and unique key限制。

我们可以在 hive 中复制相同的内容吗?

我们正在对如何实施进行一些分析。


Hive indexing在 Hive 0.7.0 中引入(HIVE-417)并在 Hive 3.0 中删除(HIVE-18448)请阅读此 Jira 中的评论。该功能在 Hive 中完全没用。这些索引对于大数据来说太昂贵了,RIP。

从 Hive 2.1.0 开始(HIVE-13290) Hive 包括对未经验证的主键和外键约束的支持。这些约束未经验证,上游系统需要在将数据加载到 Hive 之前确保数据完整性。这些约束对于生成 ER 图和查询的工具非常有用。此外,这种未经验证的约束作为自我记录很有用。如果表有这样的约束,你可以很容易地找出什么应该是 PK。

在Oracle数据库中,Unique、PK和FK约束由索引支持,因此它们可以快速工作并且非常有用。但这不是 Hive 的工作方式和设计目的。

很正常的情况是,当您在 HDFS 中加载带有半结构化数据的非常大的文件时。在其上建立索引太昂贵,并且没有索引来检查 PK 违规只能扫描所有数据。通常,您无法在大数据中强制实施约束。上游进程可以关心数据完整性和一致性,但这并不能保证您最终不会在 Hive 中从不同源加载的某些大表中出现 PK 冲突。

一些文件存储格式,例如ORC具有内部轻量级“索引”来加速过滤并启用谓词下推(PPD),使用此类索引不会实现 PK 和 FK 约束。这是无法完成的,因为通常您可以拥有许多属于 Hive 中同一个表的此类文件,并且文件甚至可以具有不同的架构。 Hive 是为 PB 级创建的,您可以在单次运行中处理 PB 级数据,数据可以是半结构化的,文件可以具有不同的架构。 Hadoop 不支持随机写入,如果您想重建索引,这会增加更多的复杂性和成本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive查询语言中的主键和索引可以吗? 的相关文章

随机推荐