HIVE中臨時表創建


在我們編寫SQL 時候,常常需要使用到臨時表。 然后我們根據這個臨時表,進行之后的操作,但是創建臨時表有一定的開銷。

1.WITH創建臨時表 如果這個臨時表並不需要保存,並且下文只需要用有限的幾次,我們可以采用下面的方法。

with as 也叫做子查詢部分,首先定義一個sql片段,該sql片段會被整個sql語句所用到,為了讓sql語句的可讀性更高些,作為提供數據的部分,也常常用在union等集合操作中。

with as就類似於一個視圖或臨時表,可以用來存儲一部分的sql語句作為別名,不同的是with as 屬於一次性的,而且必須要和其他sql一起使用才可以!

其最大的好處就是適當的提高代碼可讀性,而且大數據培訓如果with子句在后面要多次使用到,這可以大大的簡化SQL;更重要的是:一次分析,多次使用,這也是為什么會提供性能的地方,達到了“少讀”的目標。

WITH t1 AS (
        SELECT *
        FROM carinfo
    ), 
    t2 AS (
        SELECT *
        FROM car_blacklist
    )
SELECT *
FROM t1, t2
復制代碼

注意:

1.1 這里必須要整體作為一條sql查詢,即with as語句后不能加分號,不然會報錯。

1.2 with子句必須在引用的select語句之前定義,同級with關鍵字只能使用一次,多個只能用逗號分割

1.3 如果定義了with子句,但其后沒有跟select查詢,則會報錯!

1.4 前面的with子句定義的查詢在后面的with子句中可以使用。但是一個with子句內部不能嵌套with子句!

2.temporary創建臨時表

create temporary table 臨時表表名 as 
select * from 表名
復制代碼

2.1.創建的臨時表僅僅在當前會話可見,數據會被暫存到hdfs上,退出當前會話表和數據將會被刪除

2.2.如果臨時表的命名的表名和hive的表名一樣,當前會話則會查詢臨時表的數據,用戶在這個會話內將不能使用原表,除非刪除或者重命名臨時表

2.3. 臨時表不支持分區字段,不支持創建索引。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM