您好,登錄后才能下訂單哦!
小編給大家分享一下Hive常用的SQL視圖操作有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Hive 中的視圖和 RDBMS 中視圖的概念一致,都是一組數據的邏輯表示,本質上就是一條 SELECT 語句的結果集。視圖是純粹的邏輯對象,沒有關聯的存儲 (Hive 3.0.0 引入的物化視圖除外),當查詢引用視圖時,Hive 可以將視圖的定義與查詢結合起來,例如將查詢中的過濾器推送到視圖中。
普通視圖:是一個虛擬表,其本身不存儲數據,數據是由查詢語句定義的。簡單來說視圖只是的定義了 數據結構的元數據。
物化視圖:是一個特殊物理表,視圖本身保存數據,其數據來源是根據原始表或者是遠程表查詢而來,并且會定時更新數據。Hive目前僅3.0及以上版本支持。
在 Hive 中可以使用 CREATE VIEW
創建視圖,如果已存在具有相同名稱的表或視圖,則會拋出異常,建議使用 IF NOT EXISTS
預做判斷。在使用視圖時候需要注意以下事項: :
只有邏輯視圖,沒有物化視圖;
視圖是只讀的,不能 Load/Insert/Update/Delete 數據;
hive的視圖僅僅相當于一個sql的快捷方式,為了提升hql語句的可讀性
視圖在創建時候,只是保存了一份元數據,當查詢視圖的時候,才開始執行視圖對應的那些子查詢
hive的視圖保存在元數據庫中
元數據庫保存的類型為 VIRTUAL_VIEW
元數據庫保存當前視圖代表的sql語句
創建視圖時,如果 SELECT 語句中包含其他表達式,例如 x + y,則列名稱將以_C0,_C1 等形式生成
創建視圖時,如果未提供列名,則將從 SELECT 語句中自動派生列名
刪除基表并不會刪除視圖,需要手動刪除視圖
在創建視圖時候視圖就已經固定,對基表的后續更改(如添加列)將不會反映在視圖
視圖可能包含 ORDER BY 和 LIMIT 子句。如果引用視圖的查詢語句也包含這類子句,其執行優先級低于視圖對應字句。例如,視圖 custom_view 指定 LIMIT 5,查詢語句為 select * from custom_view LIMIT 10,此時結果最多返回 5 行。
create view view_name as select * from carss; create view carss_view as select * from carss limit 500;
show tables; // 可以查看表,也可以查看視圖 desc view_name // 查看某個具體視圖的信息 desc carss_view
drop view view_name drop view if exists carss_view
刪除視圖時,如果被刪除的視圖被其他視圖所引用,這時候程序不會發出警告,但是引用該視圖其他視圖已經失效,需要進行重建或者刪除。
create view sogou_view as select * from sogou_table where rank > 3 ; select count(distinct uid) from sogou_view;
ALTER VIEW [db_name.]view_name AS select_statement;
被更改的視圖必須存在,且視圖不能具有分區,如果視圖具有分區,則修改失敗。
以上是“Hive常用的SQL視圖操作有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。