實戰-基於阿里雲搭建數據倉庫(離線與實時)

離線數倉:

數據流程

離線數倉流程

  • 主要分爲兩部分:用戶行爲數倉和業務數倉
  • 用戶行爲數倉的來源是埋點的用戶行爲日誌文件,通過Flume(Source–channel- datahubSink)採集導入至DataHub中;埋點數據本質上是K-V形式JsonObject所組成的JsonArray;
  • DataHub:數據總線(topic形式,可類比kafka);
  • MaxCompute/DataWorks:數據處理平臺,dataWorks 是IDE
    DataHub數據分發
    MaxCompute/DataWorks

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三個方法。

  1. UDTF首先會調用initialize方法,此方法返回UDTF的返回行的信息(返回個數,類型)。
  2. 初始化完成後,會調用process方法,真正的處理過程在process函數中,在process中,每一次forward()調用產生一行;如果產生多列可以將多個列的值放在一個數組中,然後將該數組傳入到forward()函數。
  3. 最後close()方法調用,對需要清理的方法進行清理。

Flume 採集

file-flume-log.conf配置文件,定義了Source、channel、sink;

在這裏插入圖片描述
sink部分改爲dataHubSink
flume進程啓動

數倉分層

ods=>DWD=>DWS=>ADS(或指標集市)

數據可視化

  • DataV 大屏顯示
  • quickBI 離線儀表盤(報表)可視化:設置步驟,
  1. 數據源
  2. 數據集,確定維度(簡單理解是橫軸)和度量(要比對的縱軸)
  3. 儀表盤
  4. 數據門戶(多個儀表盤組成的指標門戶)
    DataV大屏
    quickBI4個步驟

實時數倉

數據流程架構

實時數倉架構
數據流轉

  • DTS:阿里提供的數據傳輸、同步、遷移工具
    數據表結構
  • DataWorks中實時計算模塊SteamStudio;除組件圖形化(DAG)拖拽外,還可以用FlinkSQL(Blink)進行處理;
  • FlinkSQL
  • DataV 展示,數據源配置,通過SQL生成對應的json數據。
    DataV大屏展示
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章