我是Hive的新手。我试过搜索各种网站,但没有人能够给我一个清晰的图片如下: A>外键:一般的Hive概念从未提及外键的任何内容。那么,我们如何强制执行引用约束? (我知道JOIN ON语法,所以这意味着两个表有一个主键:外键关系?)是否有更高的目的不支持外键? B个浮动平等比较:这似乎有问题。例如,检查A = 3.5 => “A> 3.49和A< 3.51”。这是正确的方法吗?
是否有任何可能有助于HQL实施的参考/材料?
感谢任何帮助,
由于 -Shiree
答案 0 :(得分:5)
Hive实现为Schema-on-Read,因此Hive对数据集没有固有的引用完整性。相反,完整性需要由源系统执行,更重要的是,需要在Hive中执行的任何查询。
答案 1 :(得分:3)
Hive目前不支持FK / PK约束。
但未来可能会出现这种情况。它为Hive CBO提供了更多信息,以便更好地进行基数估算,更好地进行查询重写:
回应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中的最佳做法是避免强制引用完整性,以避免开销。因此,如果需要,您可以在查询中明确强制执行它。