成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Spark Streaming SQL進行PV/UV統計

大數據 Spark
使用Spark Streaming SQL,并結合Redis可以很方便進行PV/UV的統計。本文將介紹通過Streaming SQL消費Loghub中存儲的用戶訪問信息,對過去1分鐘內的數據進行PV/UV統計,將結果存入Redis中。

1.背景介紹

PV/UV統計是流式分析一個常見的場景。通過PV可以對訪問的網站做流量或熱點分析,例如廣告主可以通過PV值預估投放廣告網頁所帶來的流量以及廣告收入。另外一些場景需要對訪問的用戶作分析,比如分析用戶的網頁點擊行為,此時就需要對UV做統計。

使用Spark Streaming SQL,并結合Redis可以很方便進行PV/UV的統計。本文將介紹通過Streaming SQL消費Loghub中存儲的用戶訪問信息,對過去1分鐘內的數據進行PV/UV統計,將結果存入Redis中。

2.準備工作

  • 創建E-MapReduce 3.23.0以上版本的Hadoop集群。
  • 下載并編譯E-MapReduce-SDK包

 

  1. git clone git@github.com:aliyun/aliyun-emapreduce-sdk.git 
  2. cd aliyun-emapreduce-sdk 
  3. git checkout -b master-2.x origin/master-2.x 
  4. mvn clean package -DskipTests 

編譯完后, assembly/target目錄下會生成emr-datasources_shaded_${version}.jar,其中${version}為sdk的版本。

數據源

本文采用Loghub作為數據源,有關日志采集、日志解析請參考日志服務。

3.統計PV/UV

一般場景下需要將統計出的PV/UV以及相應的統計時間存入Redis。其他一些業務場景中,也會只保存最新結果,用新的結果不斷覆蓋更新舊的數據。以下首先介紹第一種情況的操作流程。

3.1啟動客戶端

命令行啟動streaming-sql客戶端

  1. streaming-sql --master yarn-client --num-executors 2 --executor-memory 2g --executor-cores 2 --jars emr-datasources_shaded_2.11-${version}.jar --driver-class-path emr-datasources_shaded_2.11-${version}.jar 

也可以創建SQL語句文件,通過streaming-sql -f的方式運行。

3.1定義數據表

數據源表定義如下

 

  1. CREATE TABLE loghub_source(user_ip STRING, __time__ TIMESTAMP)  
  2. USING loghub  
  3. OPTIONS( 
  4. sls.project=${sls.project}, 
  5. sls.store=${sls.store}, 
  6. access.key.id=${access.key.id}, 
  7. access.key.secret=${access.key.secret}, 
  8. endpoint=${endpoint}); 

其中,數據源表包含user_ip和__time__兩個字段,分別代表用戶的IP地址和loghub上的時間列。OPTIONS中配置項的值根據實際配置。

結果表定義如下

 

  1. CREATE TABLE redis_sink  
  2. USING redis  
  3. OPTIONS( 
  4. table='statistic_info'
  5. host=${redis_host}, 
  6. key.column='interval'); 

其中,statistic_info為Redis存儲結果的表名,interval對應統計結果中的interval字段;配置項${redis_host}的值根據實際配置。

3.2創建流作業

 

  1. CREATE SCAN loghub_scan 
  2. ON loghub_source 
  3. USING STREAM 
  4. OPTIONS( 
  5. watermark.column='__time__'
  6. watermark.delayThreshold='10 second'); 
  7.  
  8. CREATE STREAM job 
  9. OPTIONS( 
  10. checkpointLocation=${checkpoint_location}) 
  11. INSERT INTO redis_sink 
  12. SELECT COUNT(user_ip) AS pv, approx_count_distinct( user_ip) AS uv, window.end AS interval 
  13. FROM loghub_scan 
  14. GROUP BY TUMBLING(__time__, interval 1 minute), window; 

4.3查看統計結果

最終的統計結果如下圖所示

使用Spark Streaming SQL進行PV/UV統計

可以看到,每隔一分鐘都會生成一條數據,key的形式為表名:interval,value為pv和uv的值。

3.4實現覆蓋更新

將結果表的配置項key.column修改為一個固定的值,例如定義如下

 

  1. CREATE TABLE redis_sink 
  2. USING redis  
  3. OPTIONS( 
  4. table='statistic_info'
  5. host=${redis_host}, 
  6. key.column='statistic_type'); 

創建流作業的SQL改為

 

  1. CREATE STREAM job 
  2. OPTIONS( 
  3. checkpointLocation='/tmp/spark-test/checkpoint'
  4. INSERT INTO redis_sink 
  5. SELECT "PV_UV" as statistic_type,COUNT(user_ip) AS pv, approx_count_distinct( user_ip) AS uv, window.end AS interval 
  6. FROM loghub_scan 
  7. GROUP BY TUMBLING(__time__, interval 1 minute), window; 

最終的統計結果如下圖所示

使用Spark Streaming SQL進行PV/UV統計

可以看到,Redis中值保留了一個值,這個值每分鐘都被更新,value包含pv、uv和interval的值。

4.總結

本文簡要介紹了使用Streaming SQL結合Redis實現流式處理中統計PV/UV的需求。后續文章,我將介紹Spark Streaming SQL的更多內容。

責任編輯:未麗燕 來源: 阿里云棲社區
相關推薦

2025-03-05 08:40:00

RedisJava開發

2017-08-14 10:30:13

SparkSpark Strea擴容

2017-06-06 08:31:10

Spark Strea計算模型監控

2016-10-16 13:48:54

多維分析 UVPV

2021-11-01 13:11:45

FlinkPvUv

2016-12-19 14:35:32

Spark Strea原理剖析數據

2017-10-13 10:36:33

SparkSpark-Strea關系

2021-06-03 08:10:30

SparkStream項目Uv

2021-08-20 16:37:42

SparkSpark Strea

2021-08-08 22:08:41

Redis開發網頁

2018-04-09 12:25:11

2021-06-06 13:10:12

FlinkPvUv

2016-05-11 10:29:54

Spark Strea數據清理Spark

2016-01-28 10:11:30

Spark StreaSpark大數據平臺

2017-09-26 09:35:22

2019-12-13 08:25:26

FlinkSpark Strea流數據

2023-10-24 20:32:40

大數據

2021-05-09 22:48:40

SQL數據庫變量

2015-08-26 11:12:11

數據溢出SQL注入SQL報錯注入

2017-06-27 15:08:05

大數據Apache SparKafka Strea
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线视频一区 | 91精品国产91久久久久久密臀 | 东方伊人免费在线观看 | 鲁大师一区影视 | 日本视频免费观看 | 久久久久国产 | 日韩综合 | 91免费在线看 | 成人精品一区二区三区中文字幕 | 精品一区二区av | 超碰电影 | 91国内精品久久 | 91av在线电影 | 一区二区三区在线 | www.国产一区 | 国产精品久久久久久久模特 | 日韩欧美大片在线观看 | 久久精品无码一区二区三区 | 欧美日韩在线免费观看 | 国产在线一区二区三区 | 亚洲成人午夜电影 | 欧美日韩国产一区二区三区 | 在线观看中文字幕 | 久久艹免费视频 | 成人1区| 久久y| chengrenzaixian| 91网站视频在线观看 | 欧美成人在线免费 | av一区二区三区四区 | 国产羞羞视频在线观看 | 久久91精品国产一区二区 | 黄色网址在线免费播放 | 亚洲一区二区精品视频在线观看 | 久久成人一区 | 日韩二三区 | 久久免费视频2 | 91亚洲免费| 91精品国产91久久综合桃花 | 韩日精品视频 | 欧美区在线 |