1. 程式人生 > >Hadoop hive裡的檢視

Hadoop hive裡的檢視

原文連結:https://www.cnblogs.com/zlslch/p/6105243.html

可以先,從MySQL裡的檢視概念理解入手

        檢視是由從資料庫的基本表中選取出來的資料組成的邏輯視窗,與基本表不同,它是一個虛表。在資料庫中,存放的只是檢視的定義,而不存放檢視包含的資料項,這些專案仍然存放在原來的基本表結構中。

        檢視可以被定義為多個表的連線,也可以被定義為只有部分列可見,也可為部分行可見。

        檢視的作用有:

                首先,可以簡化資料查詢語句

                其次,可以使用使用者能從多角度看待同一資料

                然後,通過引入檢視可以提高資料的安全性

                最後,檢視提提供了一定程度的邏輯獨立性等。

        引入檢視機制帶來的好處:

        通過引入檢視機制,使用者可以將注意力集中在其關心的資料上(而非全部資料),這樣就大大提高了使用者效率與使用者滿意度,而且如果這些資料來源於多個基本表結構,或者資料不僅來自於基本表結構,還有一部分資料來源於其他檢視,並且搜尋條件又比較複雜時,需要編寫的查詢語句就會比較煩瑣,此時定義檢視就可以使資料的查詢語句變得簡單可行。

       定義檢視可以將表與表之間的複雜的操作連線和搜尋條件對使用者不可見,使用者只需要簡單地對一個檢視進行查詢即可,故增加了資料的安全性,但不能提高查詢效率。

  Hive檢視是一種無關底層儲存的邏輯物件。檢視中的資料是SELECT查詢返回的結果。在檢視選定後才會開始執行SELECT查詢。

  需要注意的是,檢視是隻讀的,不能向檢視中插入或是載入資料。

  下面是一個建立並使用檢視的例子:

create view group_by_year_vw
as
select year,count(*) as video_ct from videos group by year;
select * from group_by_year_vw;

  檢視通常被用作將資料釋出給外部客戶端的抽象層。檢視可以使用穩定的公開的列名和資料型別來建立。

  檢視可以允許在不影響下游資料消費者的情況下修改內部的表結構。

   一定要理解,建立檢視,是基於表來建立得到檢視的。

步驟一:建立一個測試表 

create table test(id int,name string);
desc test;
結果是
id int 
name string

步驟二:基於表 test 建立一個 test_view 檢視

CREATE VIEW test_view(
id,
name_length

AS SELECT id,length(name) FROM test;

步驟三:檢視 test_view 檢視屬性

DESC test_view;

步驟四:檢視檢視結果

SELECT * FROM test_view;