我们正在尝试将oracle表迁移到配置单元并处理它们。目前oracle中的表有主键、外键和唯一键约束。我们能复制相同的hiveql吗?我们正在分析如何实施它。
mec1mxoz1#
配置单元索引在配置单元0.7.0(hive-417)中引入,在配置单元3.0(hive-18448)中删除。请阅读此jira中的注解。这个功能在Hive里完全没有用。这些指数对于大数据来说太贵了,瑞普。从hive 2.1.0(hive-13290)起,hive包括对未验证的主键和外键约束的支持。如果没有验证这些约束,则上游系统需要在加载到配置单元之前确保数据完整性。这些约束对于生成er图和查询的工具非常有用。此外,这种未经验证的约束也可以用作自文档。如果表有这样的约束,您可以很容易地找出什么应该是pk。在oracle数据库unique中,pk和fk约束由索引支持,因此它们可以快速工作并且非常有用。但这不是Hive的工作原理和设计目的。很正常的情况是在hdfs中加载非常大的文件和半结构化数据。在上面建立一个索引代价太高,如果没有索引来检查pk冲突,那么只能扫描所有数据。而且通常不能在bigdata中强制执行约束。上游进程可以关心数据的完整性和一致性,但这并不能保证最终不会在从不同来源加载的某个大表的配置单元中出现pk冲突。一些文件存储格式(如orc)具有内部轻量级“索引”以加快过滤和启用 predicate 下推(ppd),使用此类索引不实现pk和fk约束。这是无法做到的,因为通常情况下,您可以在配置单元中有许多这样的文件属于同一个表,而这些文件甚至可以具有不同的模式。为PB创建的配置单元可以在一次运行中处理PB,数据可以是半结构化的,文件可以有不同的模式。hadoop不支持随机写入,如果要重建索引,这会增加更多的复杂性和成本。
1条答案
按热度按时间mec1mxoz1#
配置单元索引在配置单元0.7.0(hive-417)中引入,在配置单元3.0(hive-18448)中删除。请阅读此jira中的注解。这个功能在Hive里完全没有用。这些指数对于大数据来说太贵了,瑞普。
从hive 2.1.0(hive-13290)起,hive包括对未验证的主键和外键约束的支持。如果没有验证这些约束,则上游系统需要在加载到配置单元之前确保数据完整性。这些约束对于生成er图和查询的工具非常有用。此外,这种未经验证的约束也可以用作自文档。如果表有这样的约束,您可以很容易地找出什么应该是pk。
在oracle数据库unique中,pk和fk约束由索引支持,因此它们可以快速工作并且非常有用。但这不是Hive的工作原理和设计目的。
很正常的情况是在hdfs中加载非常大的文件和半结构化数据。在上面建立一个索引代价太高,如果没有索引来检查pk冲突,那么只能扫描所有数据。而且通常不能在bigdata中强制执行约束。上游进程可以关心数据的完整性和一致性,但这并不能保证最终不会在从不同来源加载的某个大表的配置单元中出现pk冲突。
一些文件存储格式(如orc)具有内部轻量级“索引”以加快过滤和启用 predicate 下推(ppd),使用此类索引不实现pk和fk约束。这是无法做到的,因为通常情况下,您可以在配置单元中有许多这样的文件属于同一个表,而这些文件甚至可以具有不同的模式。为PB创建的配置单元可以在一次运行中处理PB,数据可以是半结构化的,文件可以有不同的模式。hadoop不支持随机写入,如果要重建索引,这会增加更多的复杂性和成本。