Hive外键?

时间:2012-03-14 05:22:44

标签: hive

我是Hive的新手。我试过搜索各种网站,但没有人能够给我一个清晰的图片如下: A>外键:一般的Hive概念从未提及外键的任何内容。那么,我们如何强制执行引用约束? (我知道JOIN ON语法,所以这意味着两个表有一个主键:外键关系?)是否有更高的目的不支持外键? B个浮动平等比较:这似乎有问题。例如,检查A = 3.5 => “A> 3.49和A< 3.51”。这是正确的方法吗?

是否有任何可能有助于HQL实施的参考/材料?

感谢任何帮助,

由于 -Shiree

4 个答案:

答案 0 :(得分:5)

Hive实现为Schema-on-Read,因此Hive对数据集没有固有的引用完整性。相反,完整性需要由源系统执行,更重要的是,需要在Hive中执行的任何查询。

答案 1 :(得分:3)

Hive目前不支持FK / PK约束。

但未来可能会出现这种情况。它为Hive CBO提供了更多信息,以便更好地进行基数估算,更好地进行查询重写:

  

https://issues.apache.org/jira/browse/HIVE-13019

     

https://issues.apache.org/jira/browse/HIVE-6905

回应Mo K的回答,约束并不一定意味着开销。例如,Oracle有" RELY NOVALIDATE"约束 - 因此CBO(在这种情况下为Hive CBO)依赖于该约束进行查询优化,但不必实际检查该约束是否为真。

编辑02/18/2016:我已创建https://issues.apache.org/jira/browse/HIVE-13076如果您对该功能感兴趣,请投票。

编辑07/25/2016:https://issues.apache.org/jira/browse/HIVE-13076自06/2016起已解决,应登陆Hive 2.1。我还没有看到官方文档中的更新。

答案 2 :(得分:1)

Hive 2.1.0中提供了主/外键约束支持。 请参阅2.1.0 release notes

答案 3 :(得分:0)

通常,Data Warehousing中的最佳做法是避免强制引用完整性,以避免开销。因此,如果需要,您可以在查询中明确强制执行它。