Spark中如何统计pv,uv的数量?

美图欣赏:
在这里插入图片描述
一.新鲜一感

你本来是有机会的,但是你输了,你不能总是活在过去

二.pv , uv 的概念

pv、uv属于统计网站的访问量
pv:用用户请求的ip地址来计算用户访问的网站的页面的次数
该需求的统计具有真实性,是衡量网站流量的重要指标
uv:可以理解为访问某网站的电脑的数量
网站判断来访电脑的身份是通过来访电脑的cookies实现的,往往是按天来统计
如果更换了ip后但不清除cookies,再访问相同的网站,该网站的统计的uv数是不变的

pv、uv一般是用作网站流量的趋势分析、数据对比分析、数据细分分析这三个维度 对比分析,就是给孤立的数据一个合理的参考系
GMV=销售额+取消订单金额+拒收订单金额+退货订单金额 环比:某年的1月的销量和该年的2月的销量的比较
同比:某年的1月的销量和前年的1月的销量的比较 定基比:以一个时间范围作为基点,其他时间范围的数量和基点进行比较

三.代码

数据样例:
在这里插入图片描述

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object WangZhanTJ {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("test").setMaster("local[*]")
    val sc = new SparkContext(conf)
    //setLogLevel 通过 SparkContext 指定日志级别 例: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN
    //1.这里设置的Error,不然打印太多日志了
    sc.setLogLevel("ERROR")

    //2.拿到数据源
    val lines = sc.textFile("D:\\scala学习笔记\\day08\\access.log")

    //3.按空格切分,并且拿到的是第一个元素(也就是 127.0.0.1)
    val ip = lines.map(_.split(" ")(0))

    //4.ip个数进行总的统计,就是pv
    val pv: Long = ip.count()

    //5.将ip进行去重,就得到了uv
    val uv: RDD[String] = ip.distinct()

    //6.打印出pv的结果
    println(pv.toString)

    //7.打印出uv的结果
    println(uv.collect.toBuffer)

  }
}

结果:

20/03/16 23:30:06 INFO NettyBlockTransferService: Server created on 192.168.2.1:62238
20/03/16 23:30:06 INFO BlockManager: Using org.apache.spark.storage.RandomBlockReplicationPolicy for block replication policy
20/03/16 23:30:06 INFO BlockManagerMaster: Registering BlockManager BlockManagerId(driver, 192.168.2.1, 62238, None)
20/03/16 23:30:06 INFO BlockManagerMasterEndpoint: Registering block manager 192.168.2.1:62238 with 1989.6 MB RAM, BlockManagerId(driver, 192.168.2.1, 62238, None)
20/03/16 23:30:06 INFO BlockManagerMaster: Registered BlockManager BlockManagerId(driver, 192.168.2.1, 62238, None)
20/03/16 23:30:06 INFO BlockManager: Initialized BlockManager: BlockManagerId(driver, 192.168.2.1, 62238, None)
81
ArrayBuffer(192.168.170.113, 192.168.170.115, 192.168.170.111, 127.0.0.1, 192.168.170.114, 192.168.170.112, 192.168.170.116)

Process finished with exit code 0
                      ————保持饥饿,保持学习
                            Jackson_MVP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SuperBigData~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值