hive 臨時表 with HIVE的多表查詢

2021-10-18 16:55:40 字數 2829 閱讀 5940

先來看看union all語句的使用

union all語句將倆個表中相同的字段拼接在一起進行表的查詢,注意的是union all不去重,資料會重複,我們來看看網路上的一些案例~

--準備表create external table if not exists temp_uniontest_ta(a1 string,a2 string)partitioned by (dt string)row format delimited fields terminated by '\t'stored as textfile;alter table temp_uniontest_ta add if not exists partition (dt = '2014-10-13') location '/temp/uniontest/ta/';a1  a2  2014-10-13b1  b2  2014-10-13c1  c2  2014-10-13 create external table if not exists temp_uniontest_tb(a1 string,a2 string)partitioned by (dt string)row format delimited fields terminated by '\t'stored as textfile;alter table temp_uniontest_tb add if not exists partition (dt = '2014-10-13') location '/temp/uniontest/tb/';d1  d2  2014-10-13e1  e2  2014-10-13
-- 進行union all查詢select * from (select a1,a2 from temp_uniontest_ta where dt = '2014-10-13'union allselect a1,a2 from temp_uniontest_tb where dt = '2014-10-13') tmp;a1  a2b1  b2c1  c2d1  d2e1  e2
上面是我們的union all連線,接下來我們看看hive的join連線

在這裡要注意的是hive只支援等值連線(equality joins)、外連線(outer joins)和(left/right joins)。hive 不支援所有非等值的連線,因為非等值連線非常難轉化到 map/reduce 任務。另外,hive 支援多於 2 個表的連線。join關聯查詢例項如下:

innser join(join)查詢

left outer join(left join)查詢

full outer join(full join)查詢

left semi join查詢

hive中不支援exist/in子查詢,可以用left semi join來實現同樣的效果:

注意: left semi join的 select子句中,不能有右表的字段

上述是我們常用的join查詢,接下來我們看看我們最常用的with語法:

為啥要說with呢,首先我們用的很多,賊多,hive可以通過with查詢來提高查詢效能,因為先通過with語法將資料查詢到記憶體,然後後面其他查詢可以直接使用~案例如下:

with q1 as ( select key from q2 where key = '5'),q2 as ( select key from src where key = '5')select * from (select key from q1) a;--上述**中q1是一張表,q2也是一張表,這樣我們就可以講複雜的sql語句簡化一部分,個人覺得特別好用
--插入操作例項create table s1 like src;with q1 as ( select key, value from src where key = '5')from q1insert overwrite table s1select *;
基礎的語法就如上所示啦,在實際應用中我們一般會將with,union all,if,統計函式,group by 等結合起來一起操作,一條sql56十行都是正常的,所以建議大家打好基礎方便後期的使用~~~~

最終在奉勸圖靈的廣大學子,別做伸手黨,想要成長的快點,就必須自己去操作去練習~學習是沒有捷徑的~

hive 外部表 內部表 臨時表

1.外部表 關鍵字 external 外部表建立時需要指定location 刪除外部表時,資料不被刪除 create external table page view viewtime int,userid bigint,page url string,referrer url string,ip ...

HIVE 資料庫臨時表

hive從0.14.0開始提供建立臨時表的功能,表只對當前session有效,session退出後,表自動刪除。語法 create temporary table 注意點 1 如果建立的臨時表表名已存在,那麼當前session引用到該錶名時實際用的是臨時表,只有drop或rename臨時表名才能使用...

hive 建立臨時表和往表插入資料

本文講述了如何將生成的dataframe資料批量插入hive表。往hive表中插入資料有兩種方式,一種是向指定資料庫 資料表中寫入資料,hivecontext.sql use databasename data.todf insertinto tablename 另一種是把dataframe資料註冊...