2012-03-14 100 views
3

我是Hive的新手。我嘗試過搜索各種網站,但沒有人能夠給我一個清晰的以下圖片: A>外鍵:一般的Hive概念從來沒有提及任何外鍵。那麼,我們如何強制引用約束? (我知道JOIN ON語法,這是否意味着這兩個表有一個主鍵:外鍵關係?)有沒有更高的目的不支持外鍵? B>浮動平等比較:這似乎有問題。例如,檢查A = 3.5 =>「A> 3.49和A < 3.51」。這是正確的方式嗎?蜂巢外鍵?

是否有任何可以幫助實施HQL的參考資料?

得到任何幫助,

感謝 -Shiree

回答

5

蜂巢被實現爲模式上讀取,所以通過蜂箱數據集進行沒有內在的參照完整性。相反,完整性需要由源系統執行,更重要的是由Hive中執行的任何查詢執行。

+0

感謝您的回覆。它幫助! – Shiree 2012-03-19 03:22:11

0

通常,數據倉庫中的一個最佳實踐是避免強制執行參照完整性以避免開銷。因此,如果需要出現,您可以在查詢中明確強制執行。

3

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

但是未來可能會出現這種情況。它給蜂房CBO更多的信息來做出更好的基數估計,更好的查詢重寫:

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

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

針對莫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已於2016年6月解決,應該在Hive 2.1中登陸。我在官方文檔中看不到更新。