日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实时计算pv/uv Demo演示

發布時間:2024/9/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实时计算pv/uv Demo演示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡介:本文由阿里巴巴高級技術專家鄧小勇(靜行)分享,主要用 Demo 演示如何通過實時計算 Flink 實時計算pv/uv的場景。

作者 | 鄧小勇(靜行),阿里巴巴高級技術專家

本文由阿里巴巴高級技術專家鄧小勇(靜行)分享,主要用 Demo 演示如何通過實時計算 Flink 實時計算pv/uv的場景。內容將從以下幾部分進行:

  • App 計算 pv/uv 場景
  • 實現方案(From Flink-1.11)
  • DDL
  • DML
  • 實操
  • 首先為大家展示一個比較簡單的pv/uv場景。以下圖所示的APP為例,整個業務構架需要幾個入口,包括用戶訪問入口、作者入口和運營人員入口。在運營人員入口進去可以查看系統的一些指標,比如app 的pv/uv。

    在開始介紹如何計算實時pv/uv之前,可以先了解下上圖的10個字段和它們對應的含義。通過這些字段可以了解到,用戶在APP上的任何一次操作都會在數據庫中留下一條對應的記錄,所有記錄就是該用戶在APP上的操作流水。

    那么如何實時計算pv/uv呢?

    有兩種方案。

    方案一,MySQL的變更數據同步到Kafka后進行實時計算。由于 Flink在設計之初是具有流表二象性的,所以在 Flink 1.1版本之后,就可以實現 Flink 對 Kafka變更數據的處理了,包括處理一些修改、刪除等操作。處理后的結果會放到阿里云Hologress里,方便用戶進行大數據查詢和分析。

    方案二,從上圖可以看到方案一比方案二只多了一個Kafka,在 Flink 1.11 版本之后,可以直接通過Debezium連接MySQL,然后經過Flink 實時計算,也可以完成同樣功能。

    兩個方案都可以實現,那么如何選擇呢?主要取決于業務。如果數據只是暫存,日志需要展示或是需要多個下游使用,需要保存到Kafka;如果日志不需要回溯,或是沒有下游使用,那么方案二更適合。

    實戰演示

    如下圖所示,我們選擇方案二(MySQL-CDC源表方式)來演示。

    首先打開實時計算 Flink平臺,點擊左側SQL編輯器,然后通過Create Table方式設定上文提到的10個字段。這樣就定義了數據的源頭。

    定義源頭之后,接下來要構建目標表。如下圖所示,在構建目標表時,定義了blackhole_pv_uv表,構造了一個無實際存儲的目標端,充當調試作用,先把邏輯跑通,然后再去往目標端去寫代碼。Blackhole 會吸收掉輸出結果數據,先處理掉源端和計算的問題。

    以上的表會落到 Flink Catalog里,對于實時計算pv/uv上下游表格的準備就完成了。如果需要調整表,也可以通過DDL SQL語句完成。

    做好建表準備后,如何實時計算想要達到的目標呢?以最簡單的方式來演示。

    先把數據寫到Blackhole里,然后把4個字段值計算出來,比如cuurenttime,event_hour等。

    通過上圖所示的代碼可以計算出,數據是什么時候輸入的,數據的pv/uv值等等。

    運行剛剛寫入的作業:

    然后點擊創建SQL作業,

    創建完成后,點擊啟動。

    啟動后可以點擊 Flink UI 來查看運行狀態。查看時候可以看到下端有顯示記錄了8條數據:

    回到數據庫也能看到對應的8條數據:

    如何把實際的結果寫到holo里呢?

    核心邏輯與上文實時計算的邏輯是一樣的,唯一不一樣的是,要把計算的結果既輸出到holo_pv_uv里去,同時也輸出到backhole里去,也就是要把同樣的結果輸出兩份,這是在流計算里經常會遇到的情況。甚至還有在同一作業里不同的業務邏輯或計算結果,也要輸出到不同的目標端的情況。

    打開實時計算 Flink 頁面的SQL編輯器,在輸入框中創建 temporary view,把數據記錄到blackhole 里和holo里。

    為了實現這個目標,需要增加一個叫begin statement set和end的語法,這其實是定義了一個計算邏輯,使得在它們中間的邏輯任務就會同時運行。

    然后完成部署、創建作業和啟動后,就能看到這個計算邏輯已經成功了。

    原文鏈接:https://developer.aliyun.com/article/781195?

    版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。

    總結

    以上是生活随笔為你收集整理的实时计算pv/uv Demo演示的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。