1. 程式人生 > >從Hive處理日誌到視覺化到實時

從Hive處理日誌到視覺化到實時

寫在前面

由於公司業務每日的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到視覺化到實時

  1. 建立Hive活動
    寫SQL語句,將select到的資料insert overwrite到資料倉庫,按時間(精確到小時)分割槽存放。
  2. 建立Exec活動
    先寫post檔案(程式語言不限),上述過程生成的table作為輸入,解析並封裝資料,然後推送到視覺化平臺(API)。然後建立Exec活動,聯絡post檔案。
  3. 建立工作流
    串起整個流程。
    start -> hive activity -> exec activity -> end
  4. 建立週期作業
    聯絡工作流,每小時執行一次。