溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Hive常用的SQL視圖操作有哪些

發(fā)布時(shí)間:2021-12-10 11:40:35 來(lái)源:億速云 閱讀:361 作者:小新 欄目:大數(shù)據(jù)

小編給大家分享一下Hive常用的SQL視圖操作有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

簡(jiǎn)介

Hive 中的視圖和 RDBMS 中視圖的概念一致,都是一組數(shù)據(jù)的邏輯表示,本質(zhì)上就是一條 SELECT 語(yǔ)句的結(jié)果集。視圖是純粹的邏輯對(duì)象,沒(méi)有關(guān)聯(lián)的存儲(chǔ) (Hive 3.0.0 引入的物化視圖除外),當(dāng)查詢引用視圖時(shí),Hive 可以將視圖的定義與查詢結(jié)合起來(lái),例如將查詢中的過(guò)濾器推送到視圖中。

視圖

普通視圖:是一個(gè)虛擬表,其本身不存儲(chǔ)數(shù)據(jù),數(shù)據(jù)是由查詢語(yǔ)句定義的。簡(jiǎn)單來(lái)說(shuō)視圖只是的定義了 數(shù)據(jù)結(jié)構(gòu)的元數(shù)據(jù)。
物化視圖:是一個(gè)特殊物理表,視圖本身保存數(shù)據(jù),其數(shù)據(jù)來(lái)源是根據(jù)原始表或者是遠(yuǎn)程表查詢而來(lái),并且會(huì)定時(shí)更新數(shù)據(jù)。Hive目前僅3.0及以上版本支持。

hive 視圖特點(diǎn)

在 Hive 中可以使用 CREATE VIEW 創(chuàng)建視圖,如果已存在具有相同名稱的表或視圖,則會(huì)拋出異常,建議使用 IF NOT EXISTS 預(yù)做判斷。在使用視圖時(shí)候需要注意以下事項(xiàng): :

  1. 只有邏輯視圖,沒(méi)有物化視圖;

  2. 視圖是只讀的,不能 Load/Insert/Update/Delete 數(shù)據(jù);

  3. hive的視圖僅僅相當(dāng)于一個(gè)sql的快捷方式,為了提升hql語(yǔ)句的可讀性

  4. 視圖在創(chuàng)建時(shí)候,只是保存了一份元數(shù)據(jù),當(dāng)查詢視圖的時(shí)候,才開(kāi)始執(zhí)行視圖對(duì)應(yīng)的那些子查詢

  5. hive的視圖保存在元數(shù)據(jù)庫(kù)中 
    元數(shù)據(jù)庫(kù)保存的類型為 VIRTUAL_VIEW
    元數(shù)據(jù)庫(kù)保存當(dāng)前視圖代表的sql語(yǔ)句

  6. 創(chuàng)建視圖時(shí),如果 SELECT 語(yǔ)句中包含其他表達(dá)式,例如 x + y,則列名稱將以_C0,_C1 等形式生成

  7. 創(chuàng)建視圖時(shí),如果未提供列名,則將從 SELECT 語(yǔ)句中自動(dòng)派生列名

  8. 刪除基表并不會(huì)刪除視圖,需要手動(dòng)刪除視圖

  9. 在創(chuàng)建視圖時(shí)候視圖就已經(jīng)固定,對(duì)基表的后續(xù)更改(如添加列)將不會(huì)反映在視圖

  10. 視圖可能包含 ORDER BY 和 LIMIT 子句。如果引用視圖的查詢語(yǔ)句也包含這類子句,其執(zhí)行優(yōu)先級(jí)低于視圖對(duì)應(yīng)字句。例如,視圖 custom_view 指定 LIMIT 5,查詢語(yǔ)句為 select * from custom_view LIMIT 10,此時(shí)結(jié)果最多返回 5 行。

創(chuàng)建視圖

 create view view_name as select * from carss; 
 create view carss_view as select * from carss limit 500;

查看視圖

show tables;   // 可以查看表,也可以查看視圖
desc view_name // 查看某個(gè)具體視圖的信息
desc carss_view

刪除視圖

drop view view_name
drop view if exists carss_view

刪除視圖時(shí),如果被刪除的視圖被其他視圖所引用,這時(shí)候程序不會(huì)發(fā)出警告,但是引用該視圖其他視圖已經(jīng)失效,需要進(jìn)行重建或者刪除。

使用視圖

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;

被更改的視圖必須存在,且視圖不能具有分區(qū),如果視圖具有分區(qū),則修改失敗。

以上是“Hive常用的SQL視圖操作有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI