離線數倉:
數據流程
- 主要分爲兩部分:用戶行爲數倉和業務數倉
- 用戶行爲數倉的來源是埋點的用戶行爲日誌文件,通過Flume(Source–channel- datahubSink)採集導入至DataHub中;埋點數據本質上是K-V形式JsonObject所組成的JsonArray;
- DataHub:數據總線(topic形式,可類比kafka);
- MaxCompute/DataWorks:數據處理平臺,dataWorks 是IDE
Hive的UDTF函數
- 用戶定義函數(user-defined function)UDF;
- 用戶定義聚集函數(user-defined aggregate function,UDAF);
- 用戶定義表生成函數(user-defined table-generating function,UDTF)。
UDF:返回對應值,一對一
UDAF:返回聚類值,多對一
UDTF:返回拆分值,一對多
UDF操作作用於單個數據行,並且產生一個數據行作爲輸出。大多數函數都屬於這一類(比如數學函數和字符串函數)。
UDAF 接受多個輸入數據行,併產生一個輸出數據行。像COUNT和MAX這樣的函數就是聚集函數。
UDTF 操作作用於單個數據行,並且產生多個數據行-------一個表作爲輸出。lateral view explore()
繼承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF,實現initialize, process, close三個方法。
- UDTF首先會調用initialize方法,此方法返回UDTF的返回行的信息(返回個數,類型)。
- 初始化完成後,會調用process方法,真正的處理過程在process函數中,在process中,每一次forward()調用產生一行;如果產生多列可以將多個列的值放在一個數組中,然後將該數組傳入到forward()函數。
- 最後close()方法調用,對需要清理的方法進行清理。
Flume 採集
file-flume-log.conf配置文件,定義了Source、channel、sink;
數倉分層
ods=>DWD=>DWS=>ADS(或指標集市)
數據可視化
- DataV 大屏顯示
- quickBI 離線儀表盤(報表)可視化:設置步驟,
- 數據源
- 數據集,確定維度(簡單理解是橫軸)和度量(要比對的縱軸)
- 儀表盤
- 數據門戶(多個儀表盤組成的指標門戶)
實時數倉
數據流程架構
- DTS:阿里提供的數據傳輸、同步、遷移工具
- DataWorks中實時計算模塊SteamStudio;除組件圖形化(DAG)拖拽外,還可以用FlinkSQL(Blink)進行處理;
- DataV 展示,數據源配置,通過SQL生成對應的json數據。