ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

sparkcore案例三:获取每一种状态码对应的访问量

2022-08-27 11:32:37  阅读:201  来源: 互联网

标签:map String val RDD sparkcore 案例 访问量 sc line


  • 题目描述:
/**
 * 清洗完成的数据中包含一个用户的响应状态码,获取每一种状态码对应的访问量
 *   1、读取清洗完成的数据成为RDD[String]
 *   2、可以把上一步得到的RDD通过map算子转换成一个键值对类型的RDD,以状态码为key  以不同用户的访问日志为value的数据
 *   3、键值对类型的RDD通过countByKey行动算子计算每种状态码的访问量(不灵活)。也可以使用aggregateByKey或者combineByKey实现访问量的统计
 */
  • 代码:方法一:
object A3StatusCount {
  def main(args: Array[String]): Unit = {
    val sparkConf:SparkConf = new SparkConf().setAppName("demo02").setMaster("local[3]")
    val sc:SparkContext = new SparkContext(sparkConf)

    val value: RDD[String] = sc.textFile("hdfs://node1:9000/dc")
    val map = value.map((line: String) => {
      val str: String = line.split(" ")(8)
      (str, 1)
    })
    val count = map.reduceByKey(_ + _)
    count.foreach(println(_))

    sc.stop()
  }
}
  • 代码:方法二:
object A3StatusCount {
  def main(args: Array[String]): Unit = {
    val sparkConf:SparkConf = new SparkConf().setAppName("demo02").setMaster("local[3]")
    val sc:SparkContext = new SparkContext(sparkConf)

    val value: RDD[String] = sc.textFile("hdfs://node1:9000/dc")

    val map: RDD[(String, String)] = value.map((line: String) => {
      val strs = line.split(" ")
      (strs(8), line)
    })
    val agg = map.aggregateByKey(0L)(
      (a: Long, b: String) => {
        a + 1L
      },
      (a: Long, b: Long) => {
        a + b
      }
    )
    agg.foreach(println(_))

    sc.stop()
  }
}

标签:map,String,val,RDD,sparkcore,案例,访问量,sc,line
来源: https://www.cnblogs.com/jsqup/p/16630182.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有