大資料面試題——場景題
有如下場景:
某公司網站每日訪問量達到10億級別的訪問量,每次訪問記錄一條資料,資料包含如下欄位:使用者ID,訪問時間(毫秒級),訪問頁面。
要求使用hive求出所有在5分鐘內訪問次數達到100次的使用者(求出使用者ID即可)
思路:利用視窗函式Lag
詳細思路:
1.選出當天訪問次數達到100次的使用者(即當天有100及以上條資料的使用者):根據使用者ID分組,count
2.在每個 使用者ID小組內(步驟1已進行分組)按 訪問時間進行升序排序
3.計算time-lag(time,100),若time-lag(time,100)<=5601000(毫秒),即為滿足條件的使用者,篩選出。
HQL語句書寫
select t.id from{
select
id,
time-lag(time,100,time-5601000-1) over(partition by id order by time) as time_length
from log
group by id
} t
group by id
having min(time_length)<=5601000
註釋:time-lag(time,100,time-5601000-1) 中100表示取前100行的資料,若無前100行的資料,則取預設值time-5601000-1。當去預設值time-5601000-1時,time-(time-5601000-1)為5min零1毫秒,大於5min,不滿足條件,後續過濾掉。
ps:該HQL只表示大致思路,有優化空間。
擴充思考:該方式為離線分析,若要實時分析,改如何實現?
補充知識點:
LAG和LEAD函式
LAG(col,n,DEFAULT) 用於統計視窗內往上第n行值
第一個引數為列名,
第二個引數為往上第n行(可選,預設為1),
第三個引數為預設值(當往上第n行為NULL時候,取預設值,如不指定,則為NULL)
LEAD(col,n,DEFAULT) 用於統計視窗內往下第n行值
第一個引數為列名,
第二個引數為往下第n行(可選,預設為1),
第三個引數為預設值(當往下第n行為NULL時候,取預設值,如不指定,則為NULL)
相關文章
- 大資料面試問題大資料面試
- 雲端計算大資料面試題,雲端計算大資料面試題集錦大資料面試題
- 寶蘭德大資料面試題大資料面試題
- 知道創宇大資料面試題大資料面試題
- 大資料面試常見的面試題總結大資料面試題
- 【面試題】大資料開發第1輪面試面試題大資料
- 海量資料場景面試題:出現頻率最高的 100 個詞面試題
- 大資料某公司面試題-附答案大資料面試題
- 大資料面試題以及答案整理(一)大資料面試題
- 高頻面試題:秒殺場景設計面試題
- 從一道場景面試題談起面試題
- 資料庫面試題資料庫面試題
- 面試題:Redis的應用場景核心設計,看完面試不在慌!面試題Redis
- 2018年--阿里大資料面試題(部分精選)阿里大資料面試題
- Hadoop大資料面試題全版本,必看跳槽指南!Hadoop大資料面試題
- 大資料面試題整理-好程式設計師大資料面試題程式設計師
- 大資料數倉高階面試題整理《一》大資料面試題
- Java_資料庫面試題Java資料庫面試題
- 資料結構面試100題資料結構面試
- 資料庫面試題總結資料庫面試題
- 面試場景題:一次關於執行緒池使用場景的討論。面試執行緒
- 資料探勘面試筆試題(附答案)面試筆試
- Java大廠面試題Java面試題
- 資料庫sql的優化問題的面試題資料庫SQL優化面試題
- 資料庫面試簡答、30道高頻面試題資料庫面試題
- 一套高階大資料開發面試題(刷起來!!!)大資料面試題
- HTML最新面試題(筆試面試題)HTML面試題筆試
- 資料庫常見面試題總結資料庫面試題
- 資料庫面試題(開發者必看)資料庫面試題
- Redis面試題-Redis 16個資料庫Redis面試題資料庫
- 面試系列二:精選大資料面試真題JVM專項-附答案詳細解析面試大資料JVM
- (四) BAT面試的20道高頻資料庫面試題BAT資料庫面試題
- 面試題錦(大廠面試前夕的掙扎)面試題
- DataWorksV2.0新增資料來源典型問題場景
- react面試題 機試題React面試題
- 資料結構和演算法面試題系列—二叉樹面試題彙總資料結構演算法面試題二叉樹
- 「面試題」20+Vue面試題整理面試題Vue
- 一萬七千字長文詳解那些大資料面試中的kafka面試題。附下載大資料Kafka面試題