2012-06-29 44 views

回答

6

號的「R」爲「關係數據庫」。 Hive是NOSQL數據庫,不是關係數據庫。與許多其他NOSQL數據庫相比,這是Hive的一個巨大優勢,您可以使用(幾乎)普通的SQL和幾乎全功能的標準JDBC接口訪問它。但是如果你正在考慮一起使用ORM和Hive,你可能會從錯誤的角度來處理你的問題。

編輯13年6月4日:這裏是維基百科報價:在關係模型中,每個表的架構必須標識用於標識稱爲主鍵行的主列。表可以通過使用指向主鍵的外鍵相關聯。

Hive不支持外鍵和主鍵,因此它不是關係數據庫。

我想感謝downvoter讓我有機會重新檢查導致我作出原始聲明的推理。

+0

試圖編程到JDBC接口是相當原始的,寧願編程到略高的抽象,因爲我習慣編程到JPA層很多。因此我的問題。 – priya

+0

你試圖在Hive中存儲什麼樣的數據? Hive在處理非常大,非常平坦的桌子時處於最佳狀態。如果您的數據模型足夠複雜以從ORM中受益,那麼您可能會看到一個錯誤的工具。 – Olaf

+0

我很難看出Hive是如何成爲NoSQL數據庫的,因爲與它交互的主要方式是通過SQL。事實上,我認爲這是Hive的整個_point_是一個SQL數據庫。也許不是關係型(如Olaf指出的那樣) –

0

Hive是Hadoop之上的一個生態系統組件。它不是一個RDBMS或NOSQL數據庫,它只是在HDFS(文件系統)之上編寫MapReduce編程的一種方式。

Hive創建的目的是爲了讓開發人員更友好,擁有sql知識的人可以通過編寫sql語句輕鬆運行MapReduce。 MapReduce可以表示爲一個sql,Hive引擎使用Driver將它們轉換爲MapReduce。

Hive使用Metastore對存儲及其結構進行劃分。 Metastore是簡單的RDBMS,就像我們可以連接它並在其上創建一個sql語句一樣。一旦我們在Metastore上創建了HQL語句,Metastore就有能力告訴下劃線Hive引擎執行HQL語句並給出作爲結果集返回結果。