從Hive處理日誌到視覺化到實時
阿新 • • 發佈:2019-02-05
寫在前面
由於公司業務每日的pv和uv需要統計,所以公司需要一套機制來去儲存資料,並且週期性地處理資料。
Hive
資料倉庫,建立在HDFS上,通過SQL語句處理海量資料。它會將SQL語句轉化成MapReduce過程,然後分發給叢集處理。元資料一般儲存在MySQL(關係資料庫)中。
分割槽
partition靜態分割槽
根據partition的引數來分割槽
insert overwrite table test partition (day='20170615',hour='1200') ...
動態分割槽
假如有大量的分割槽日誌檔案,不可能每個分割槽insert一遍,所以利用動態分割槽來做insert overwrite table test partition (day,hour) select a,b,c,day,hour from t;
partition的引數與select中的列名沒有關係,而是與位置有關係,它會選擇select中的最後兩個列聯絡起來。有時也可以動靜結合。
insert overwrite table test partition (day='20170615',hour) select a,b,c,day,hour from t where day='20170615';
- 分桶
buckets(採用對列值雜湊來組織資料)
從Hive到視覺化到實時
- 建立Hive活動
寫SQL語句,將select到的資料insert overwrite到資料倉庫,按時間(精確到小時)分割槽存放。 - 建立Exec活動
先寫post檔案(程式語言不限),上述過程生成的table作為輸入,解析並封裝資料,然後推送到視覺化平臺(API)。然後建立Exec活動,聯絡post檔案。 - 建立工作流
串起整個流程。
start -> hive activity -> exec activity -> end - 建立週期作業
聯絡工作流,每小時執行一次。