点击量与浏览量的数据处理

数据处理

  1. 源数据样例
    1010,华语剧场|剧情|当代|类型,1,0
  2. 需求
    1010,华语剧场|剧情|当代|类型,1,0
    数据格式说明:
    id,关键字组合,使用的是|分割符,是否展示(0未展示,1展示),点击(0未点击,1点击))

    要求输出:1010 关键字 展示量 点击量
    输出示例:1010 华语剧场 3 2

  3. 代码实现
import scala.collection.mutable
import scala.io.Source
import scala.util.control.Breaks._
import scala.collection.mutable.Map
/**
  *
    1010,华语剧场|剧情|当代|类型,1,0
    数据格式说明:
      id,关键字组合,使用的是|分割符,是否展示(0未展示,1展示),点击(0未点击,1点击))

      要求输出:1010 关键字 展示量  点击量
      输出示例:1010 华语剧场 3 2

    说明:
    读取文件的代码:
      val lines: Iterator[String] = Source.fromFile("impclick.txt").getLines()
    分词时,需要进行转义 \\|  [|]   | 分不出来结果
  */
object HomeWork extends App {
  //
  val lines: Iterator[String] = Source.fromFile("D:\\scalaStudy\\day-03\\作业\\impclick.txt").getLines()
  //将获取到的数据切分并压平
  lines.toArray.flatMap({
    t =>
      val arr = t.split(",")
      val id = arr(0)
      val keys = arr(1)
      val glance = arr(2)
      val click = arr(3)

      keys.split("\\|").map({
        key =>
          //迭代返回一个元组
          ((id,key),glance.toInt,click.toInt)
      })
  }).toList.groupBy({
    t =>
      //以id和key分组
      t._1
  }).map({
    t =>
      //求点击量和浏览量
      val glance:Int = t._2.map(t => t._2).sum
      val click = t._2.map(t => t._3).sum
      (t._1._1,t._1._2,glance,click)
  })//排序
    .toList.sortBy(t => -t._3)
    //打印
    .foreach(println)

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值