1

我们正在尝试将 oracle 表迁移到配置单元并处理它们。目前 oracle 中的表有primary key,foreign keyunique key约束。

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

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

4

1 回答 1

2

Hive索引在 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 中拥有许多属于同一个表的此类文件,并且文件甚至可以具有不同的模式。为 PB 创建的 Hive,您可以在单次运行中处理 PB,数据可以是半结构化的,文件可以具有不同的模式。Hadoop 不支持随机写入,如果您想重建索引,这会增加更多的复杂性和成本。

于 2019-07-11T11:35:14.977 回答