寫本文的目的是為了從本文開始,讓自己養成寫博文的習慣,也將知識一點點的沉澱下來,自己回頭看的時候方便,能為其他人提供一些幫助更好。同時也會整理一些面試題。1、兩表join,條件寫在的on後面和where後面什麼區別?
1. left join,不管on後面跟什麼條件,左表的資料都會列出來,右表中關聯不上的會置空,因此要想過濾掉髒資料,需把條件放到where後面
2. inner join,滿足on後面的條件表的資料才能查出,可以起到過濾作用。也可以把條件放到where後面。
2、distinct 和 group by有什麼區別?在哪種情況下使用group by效能會更優?distinct會將去重欄位放到乙個reduce中,資料量大的時候效率低
group by,shuffle時會根據group by後面的字段進行分組,分發到多個reduce中,提公升效率
因此,在大資料量時用group by代替distinct()
3、group by時由資料中key的問題導致的資料傾斜怎麼解決?set hive.map.aggr=true (開啟map端combiner),重複資料少的話,必要性不大
set hive.groupby.skewindata=true;//開啟負載均衡。只能對單個字段聚合,控制生成兩個mr,第乙個mr的map輸出結果隨機分配到reduce中做部分聚合操作,相同的key可能分到不同的reduce中,達到均衡作用;第二個mr再根據預處理好的資料按照group by key分布到乙個reduce中,最終完成聚合操作。
4、小表和大表關聯1、將小表寫在前
2、set hive.auto.convert.join = true ; //將小表刷入記憶體中
hive優化最後一版整理
hive資料儲存的格式有文字格式 textfile 二進位制序列化檔案 sequencefile 行列式檔案 rcfile apache parquent 和 優化的行列式檔案 orcfile orcfile 和 parquent,高效的資料儲存和資料處理效能得以在實際的生產環境中大量運用。同時 o...
Hive時間整理
from unixtime unix timestam from unixtime 時間戳轉日期函式 返回值 string unix timestamp 日期轉時間戳函式 返回值 bigint 時間戳一般是10位數的,13位數的為毫秒級的,毫秒級時間戳直接使用from unixtime轉換需要 10...
hive 幾種hive優化方法
1.通過explain或者explain extended來檢視執行計畫。explain select from u3 執行結果 stage dependencies stage 0 is a root stage stage plans stage stage 0 fetch operator l...