基于Flink实时项目:用户行为分析(三:网站总浏览量统计(PV))

1.需求:

1.网站总浏览量(PV)的统计

2.对于PV做一个简介:
衡量网站流量一个最简单的指标,就是网站的页面浏览量(Page View,PV)。用户每次打开一个页面便记录 1 次 PV,多次打开同一页面则浏览量累计。一般来说,PV 与来访者的数量成正比,但是 PV 并不直接决定页面的真实来访者数量,如同一个来访者通过不断的刷新页面,也可以制造出非常高的 PV。

3.思路:设置滚动时间窗口,实时统计每小时内的网站

2.代码实现

import org.apache.flink.api.scala._
import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment
import org.apache.flink.streaming.api.windowing.time.Time

//设置输入数据类型
case class userBehavior(userId:Long,itemId:Long,categoryId:Int,behavior:String,timestamp:Long)

object PageView {
  def main(args: Array[String]): Unit = {

    val env = StreamExecutionEnvironment.getExecutionEnvironment
    env.setParallelism(1)

    val data = env.readTextFile("E:\\WY\\programme\\MusicProject\\src\\main\\resources\\UserBehavior.csv")

    val dataStream = data.map(data => {
      val arr = data.split(",")
      userBehavior(arr(0).toLong, arr(1).toLong, arr(2).toInt, arr(3), arr(4).toLong)
    })

    val resultStream = dataStream
      .assignAscendingTimestamps(_.timestamp * 1000L)
      .filter(_.behavior == "pv")
      .map(x => ("pv", 1))
      .keyBy(_._1)
      .timeWindow(Time.seconds(60 * 60))
      .sum(1)

    resultStream.print()

    env.execute()

  }
}

3.结果展示

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_48929324/article/details/117339290