1.背景介绍
光伏/紫外统计是流量分析的常见场景。通过光伏,流量或热点分析可以在被访问的网站上完成。例如,广告商可以通过光伏价值来估计投放广告网页带来的流量和广告收入。其他场景需要分析访问过的用户,如分析用户的网页点击行为,此时需要紫外线统计。
光伏/紫外统计可以很容易地使用火花流数据库和再贴现相结合来进行。本文将介绍存储在流式SQL消费日志中心的用户访问信息,过去1分钟内数据的光伏/紫外统计,结果将存储在Redis中。在
2.准备工作
编译后,EMR-DataSources _ Shaded _ $ { version }。JAR将在程序集/目标目录中生成,其中$ {Version}是sdk版本。
数据源
Loghub用作本文的数据源。有关日志收集和日志分析,请参考日志服务。
3.统计PV/UV
在一般情况下,光伏/紫外统计数据和相应的统计时间需要存储在Redis中。在其他业务场景中,只会保存最新的结果,旧数据会随着新结果不断更新。下面首先介绍第一种情况的操作流程。
3.1启动客户端
命令行开始流式传输-也可以在流式传输-sql -f模式下创建和运行sql客户端
streaming-SQL-master thread-client-num-executor S2-executor-memory 2g-executor-cores 2-jarsemr-data sources _ shaded _ 2.11-$ { version } .jar-driver-class-path EMR-数据源_ shaded _ 2.11-$ { version } .jar@
SQL语句文件。
3.1定义数据表
数据源表定义如下
其中数据源表包含user_ip和__time__字段,分别代表用户的ip地址和日志集线器上的时间列。OPTIONS中配置项的值根据实际配置进行配置。
结果表定义如下
其中statistic_info是Redis存储结果的表名,间隔对应于统计结果中的间隔字段;配置项${redis_host}的值是根据实际情况配置的。
3.2创建流作业
4.3查看统计结果
的最终统计结果如下图
可以看出,每隔一分钟就会生成一条数据,键的形式是表名:interval,值是pv和uv的值。
3.4实现覆盖更新
4.总结
SQL定义为
创建流作业选项(检查点位置=’/tmp/火花测试/检查点)插入到选择“光伏紫外”作为静态类型,计数(用户ip)ASpv,约计_count_distinct(user_ip)ASuv,窗口。EndIntErvalRomloghub _ scanGroupBYumbling(_ _ time _ _,时间间隔1分钟)
本文简要介绍了在流式处理中结合Redis使用流式SQL实现统计PV/UV的要求。在下面的文章中,我将介绍更多关于火花流SQL的内容。
极牛网精选文章《使用Spark Streaming SQL进行PV/UV统计》文中所述为作者独立观点,不代表极牛网立场。如若转载请注明出处:https://geeknb.com/3667.html