hive相關綜合知識點彙總

2021-10-07 04:38:04 字數 1865 閱讀 9411

一、檢視:

檢視中保留有原表的元資料資訊,但是不會保留資料,當我們查詢檢視的資料的時候,可以查到,但是當我們查詢真正資料的時候,這是後才會去執行建立檢視的時候的sql語句。例如:

表a為

執行建立檢視語句:create view a_view as select * from a where dt = 2020/6/13

那麼當我們執行desc a_view的時候,會看到id,name這兩列,當我們去執行select * from a_view 的時候,才會真正去執行select * from a where dt = 2020/6/13。但是,此時我們在a中加入乙個age欄位後,不去執行建立檢視語句,繼續沿用之前的,那麼執行desc的時候會發現還是只有id和name兩列(因為檢視會保留元資料,所以表結構是直接用的原來檢視存下來的),如果我們去執行select * from a_view 這時候會發現有三列資料,因為這個時候再去查詢檢視,實際去執行了select * from a where dt = 2020/6/13,所以會有全部欄位和資料。

二、hive1.x(1.2.1為例)和hive2.x(2.3.5為例)的sql相容

1.隱式轉換:如果兩張表需要union、union all,那麼這樣個表中的字段型別必須一致,如果字段型別在同一組裡,那麼可以自動轉換,如果不同組,則需要強制轉換,否則報錯

2.隨著版本的變遷,保留字越來越多,如果用到了必須加上反引號

3.hive的引數配置問題,如果引數的大小寫不對,則會直接報錯

4.建表的時候不指定列的具體型別,會直接報錯。例如:

create table table1 as select id,name from table2;不可以是create table table1 as select * from table2

5.hint的方式不支援了,所以之前的/* +mapjoin(gs)*/類似這樣的mapjoin方式的優化要去掉,不然會報空指標異常,用set hive.auto.convert.join=true;代替,更為智慧型

6.set hive.hadoop.supports.splittable.combineinputformat=true;set hive.ptf.partition.persistence.memsize=671088640;set hive.support.sql11.reserved.keywords=false;不支援了

7.反射udf預設在黑名單裡,不可用,有安全風險

三、join在mr中處於哪個過程

1.這裡需要注意明確的一點:join只是乙個連線的過程

2.如果是join,如select * from a join b。

①如果ab都是大表,則會發生reduce階段,在map階段會將兩個表的key拿出來排序,然後在reduce中將兩列key進行關聯(也就是join),最終從對應的表裡取出字段。如果是count(*) 有group by,那麼就會再接乙個mr,然後進入第二個mr,在第二個mr的reduce中進行聚合彙總

②如果ab表有乙個是小表(小於64m),那麼就會將小表載入到記憶體裡,然後將大表的key拿出來,去到記憶體中和小表的key進行關聯(join),此時join是發生在map中的,且沒有reduce階段。如果是count(*) 有group by,那麼就會再接乙個mr,然後進入第二個mr,在第二個mr的reduce中進行聚合彙總

3.如果是left join ,如select * from a left join b。

①如果a是小表,會自動載入到記憶體裡,進行mapjoin,這也是為什麼hive建議小表在左,大表在右的原則

②如果都是大表,則遵循2-①原則,或者可以手動開啟mapjoin(sql中加入/*+mapjoin(小表)*/),

hive常用知識點彙總

1.desc extended formated tablename 描述表結構,如 desc extended im desc formatted im 2.bin hive e f e 不進入hive命令列執行sql語句,如 bin hive e select from im database ...

函式相關知識點彙總

python定義乙個函式使用def保留字,格式如下 def 函式名 引數 函式體 return 返回值列表 引數定義與傳遞的基本順序 位置引數 關鍵字引數 可變數量引數 普通的引數叫做位置引數,呼叫時需要按照位置傳遞引數值。關鍵字引數就是在呼叫函式,傳入實參時指定形參的變數名。當函式被呼叫時,如果沒...

天氣相關知識點彙總

1.數值天氣預報 numerical weather prediction 指根據大氣實際情況,在一定的初值和邊值條件下,通過大型計算機作數值計算,求解描寫天氣演變過程的流體力學和熱力學的方程組,未來一定時段的大氣運動狀態和天氣現象的方法。2.天氣預報分類 根據時效性長短 1 短時預報,根據雷達 衛...