2019-06-16
星型模型、雪花模型
根據事實表和維度表的關係,又可將常見的模型分為星型模型和雪花型模型。
星型架構是一種非正規化的結構,多維資料集的每乙個維度都直接與事實表相連線,不存在漸變維度,所以資料有一定的冗餘
當有乙個或多個維表沒有直接連線到事實表上,而是通過其他維表連線到事實表上時,其**就像多個雪花連線在一起,故稱雪花模型。
它的優點是 : 通過最大限度地減少資料儲存量以及聯合較小的維表來改善查詢效能。雪花型結構去除了資料冗餘。此在冗餘可以接受的前提下,實際運用中星型模型使用更多,也更有效率(空間換易用與效率)。
sql,至少兩天內登陸的使用者
select user_pin,num from
(select user_pin,
count(*
)as num from
(select user_pin,days - rn as flag from
(select user_pin,ordr_time,datediff(ordr_time,
'2019-07-01'
)as days,row_number(
)over
(partition
by user_pin order
by ordr_time asc
)as rn
from idm.idm_f02_fin_xjk_tx_dtl_s_d where dt=sysdate(-1
)and to_date(ordr_time)
>=
'2019-07-01'
and(user_pin is
notnull
or user_pin='')
)s1 )s2
group
by user_pin,flag
)s3where num>=
2
lateral view 與 explode使用
select s.title,ex
from movie_message s
lateral view explode(split(concat_ws(
',',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9')
,','
)) t as ex
6. map的優化,map個數如何確定
map數過多:
合併小檔案 : 通過以下方法來在map執行前合併小檔案,減少map數:
set mapred.max.split.size=
100000000
;set mapred.min.split.size.per.node=
100000000
;set mapred.min.split.size.per.rack=
100000000
;set hive.input.format=org.apache.hadoop.hive.ql.io.combinehiveinputformat;
group by 和distinct
使用distinct會將所有的資料都shuffle到乙個reducer裡面,導致資料傾斜。
能使用group by代替distinc就不要使用distinct。
資料傾斜問題、解決
(1)hive.groupby.skewindata=true
負載均衡,當選項設定為 true,生成的查詢計畫會有兩個 mr job。第乙個 mr job 中,map 的輸出結果集合會隨機分布到 reduce 中,每個 reduce 做部分聚合操作,並輸出結果,這樣處理的結果是相同的 group by key 有可能被分發到不同的 reduce 中,從而達到負載均衡的目的;第二個 mr job 再根據預處理的資料結果按照 group by key 分布到 reduce 中(這個過程可以保證相同的 group by key 被分布到同乙個 reduce 中),最後完成最終的聚合操作。
(2)大小表使用mapjoin
(3)group by代替distinct
(4)空值的 key 變成乙個字串加上隨機數,就能把傾斜的資料分到不同的reduce上 ,解決資料傾斜問題
小表關聯大表
在命令列開啟mapjoin功能:
set hive.auto.convert.join=true;
事實上「把小表放在前面做關聯可以提高效率」這種說法是錯誤的。正確的說法應該是「把重複關聯鍵少的表放在join前面做關聯可以提高join的效率。」
面經 數倉 頭條
1.sql4種以上去重 2.sql行轉列,不用explode 3sql抽樣不用sample,按照type欄位,每個type抽樣5 4.python,有序陣列,平方去重後的長度 1,0,1,2 不用set 5.字典排序,按照value排序 6.1,2 2.3 3,4.5 1,2,3,4,5 時間空間複...
頭條面經分析
7月14日 一面 二面 一面45min 首先做了自我介紹,然後簡單回答了面試官對於專案中的一些疑問,沒有太多的深入。一面面試官比較和藹,問的問題比較專業,比較基礎,簡單做了一下回憶 virtual函式能不能用在建構函式中,為什麼?我的回答 一般建構函式不能virtual,析構函式才用virtual。...
頭條ai lab視覺組實習面經
1 簡單的介紹一下專案內容和自己做的工作。2 問了一下專案裡面提到的相關的點,比如cascade結構和detnet等亮點所在和作用。3 最新的一些 的follow。4 ssd及其改進,yolov1v2v3的講解。5 樸素貝葉斯的分類原理,寫公式並講解。6 乙個開放性問題,如果給定的訓練資料類別小於測...