Hive 高級應用及分析窗口函數 原

Hive高級應用
1、支持複雜數據類型
array,map,struct
支持對應複雜數據類型的遍歷和查詢

2、支持視圖

3、函數
3.1、豐富的內置函數
3.2、支持自定義Java處理類,以jar文件的方式添加至Hive,定義臨時函數關聯處理類,對數據進行自定義處理
3.3、Json數據的解析和操作get_json_object,json_tuple
3.3、通過Transform在HQL中調用自定義腳本如Python
3.4、分析窗口函數
a.sum,avg,min,max窗口內聚合分析
over (partition by col1 order by col2 rows between unbounded[n] preceding and current row[n following])
如果不指定ROWS BETWEEN,默認爲從起點到當前行;
如果不指定ORDER BY,則將分組內所有值累加;
關鍵是理解ROWS BETWEEN含義,也叫做WINDOW子句:
PRECEDING:往前
FOLLOWING:往後
CURRENT ROW:當前行
UNBOUNDED:起點,
UNBOUNDED PRECEDING 表示從前面的起點,
UNBOUNDED FOLLOWING:表示到後面的終點
b.Ntile,row_number,ran,dense_ran
NTILE(n) 用於將分組數據按照順序切分成n片,返回當前切片值
ROW_NUMBER() 從1開始,按照順序,生成分組內記錄的序列,無重複
RANK() 生成數據項在分組中的排名,排名相等會在名次中留下空位335
DENSE_RANK() 生成數據項在分組中的排名,排名相等會在名次中不會留下空位,334
c.cume_dist,percent_rank
CUME_DIST :小於等於當前值的行數/分組內總行數
PERCENT_RANK :分組內當前行的RANK值-1/分組內總行數-1
d.lag,lead,first_value,last_value
LAG(col,n,DEFAULT) 用於統計窗口內往上第n行值
LEAD(col,n,DEFAULT) 用於統計窗口內往下第n行值
first_value(col1) over (partition by col2 order by col3)取分組內排序後,截止到當前行,第一個值
last_value(col1) over (partition by col2 order by col3)取分組內排序後,截止到當前行,最後一個值
e.grouping sets,grouping_id,cube,rollup 常用於OLAP
grouping sets,grouping_id 將GROUP BY分組字段各個進行聚合,最終結果合併一塊
cube 將GROUP BY分組字段所有組合的聚合
rollup 將GROUP BY分組字段層級組合的聚合

4、特殊分隔符處理,regexserde正則表達式解析,自定義inputformat處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章