美文网首页
Spark统计某用户使用天数最多的设备

Spark统计某用户使用天数最多的设备

作者: 阿坤的博客 | 来源:发表于2018-09-03 10:47 被阅读56次

本文使用Spark统计某个用户使用设备的天数最多的设备ID,来源于朋友的面试题。

1.需求

日志格式
time:时间(yyyy-MM-dd HH:mm:ss)
eventid:时间ID
deviceid:设备ID
一次一条记录,例如:

2018-09-01 12:00:00 1   a
2018-09-01 12:00:00 2   a
2018-09-01 12:00:00 3   a
2018-09-01 12:00:00 1   b
2018-09-01 12:00:00 1   c
2018-09-01 12:00:00 2   c
2018-09-02 12:00:00 1   b
2018-09-02 12:00:00 2   b
2018-09-02 12:00:00 1   c
2018-09-02 12:00:00 2   c
2018-09-03 12:00:00 1   b
2018-09-04 12:00:00 1   a

第一天使用a三次,b一次,c两次
第二天使用b两次,c两次
第三天使用b一次
第四天使用a一次
统计结果为:
b设备使用3天,a设备使用2天,c设备使用2天

2.实现

2.1.数据分析

1、用户在某天使用了某个设备,不管使用了多少次都算一次,那么可以统计(设备ID,时间)进行去重。
比如:第一天的数据转换后应该是这样的
(a,2018-09-01)(b,2018-09-01)(c,2018-09-01)
2、转换为如上数据后就是一个WordCount了
map((_._1,1))

2.2.代码实现

object DiviceCount {
  def main(args: Array[String]): Unit = {
    //创建一个Config
    val conf = new SparkConf()
      .setAppName("DeviceCount")
      .setMaster("local")

    //核心创建SparkContext对象
    val sc = new SparkContext(conf)

    //WordCount
    sc.textFile("D:\\workspaces\\idea\\hadoop\\spark\\data\\device.txt")
      .map(line => {
        val lines = line.split("\t")
        val date = lines(0).substring(0, 10)
        val device= lines(2)
        (device, date)
      })
      .distinct()
      .map(x => (x._1, 1))
      .reduceByKey(_ + _)
      .sortBy(_._2, false)
      .foreach(println)

    //停止SparkContext对象
    sc.stop()
  }
}

执行结果如下:

(b,3)
(a,2)
(c,2)

相关文章

  • Spark统计某用户使用天数最多的设备

    本文使用Spark统计某个用户使用设备的天数最多的设备ID,来源于朋友的面试题。 1.需求 日志格式time:时间...

  • DolphinScheduler案例实战

    1. 案例说明 案例:每分钟统计一次用户的个数 在MySQL中有一张用户表users: 需求是,使用spark程序...

  • 需求实现1

    实时统计注册人员信息用户使用网站或APP进行注册,后台实时收集数据传输Kafka,Spark Streaming进...

  • Redis bitmap使用场景

    统计每个用户一年的登录天数 使用redis的bitmap数据结构,按照一年365天计算,使用长度为365的bitm...

  • xgb模型准确性很低的调优

    基于spark xgb 对于潜在新用户的弱特征进行建模,都是用关联的老用户的业务统计值、标签的统计值建模。 lab...

  • Learning Spark [5] - UDF(User-de

    UDF 为了满足用户的不同的分析需求,Spark允许使用者自己定义函数,供用户在Spark SQL中使用。例如数据...

  • Redis 位图 bitmap的使用

    bitCount 解决时间窗口统计用户登录天数 SETBIT key offset valuesummary: S...

  • 新微商怎么做:QQ空间微商兵法

    腾讯的QQ是国内使用用户最多的聊天工具,它所捆绑的QQ空间据统计活跃账户多达5亿个,记住是活跃用户,不是注册用户,...

  • spark sql 2.3 源码解读 - 架构概览 (1)

    ​ spark sql 的前身是shark,类似于 hive, 用户可以基于spark引擎使用sql语句对数...

  • Spark-PySpark 广播文件

    目前项目需要,将使用Spark进行数据的统计和分析, 现对pyspark进行详细记录声明, 由于spark发展日新...

网友评论

      本文标题:Spark统计某用户使用天数最多的设备

      本文链接:https://www.haomeiwen.com/subject/evkbwftx.html