Java (Spark案例分析)

本文通过Java编程,详细分析了使用Spark进行大数据处理的三个实际案例:计算网页访问量前三名,找出每个学院访问最多的网址,以及实现自定义分区策略,将相同学院的数据归并到一个结果文件中。通过案例展现了Spark在大数据处理中的高效能。
摘要由CSDN通过智能技术生成

一、需求:计算网页访问量前三名

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
 
/**
  * 需求:计算网页访问量前三名
  * 用户:喜欢视频 直播
  * 帮助企业做经营和决策
  *
  * 看数据
  */
object UrlCount {
  def main(args: Array[String]): Unit = {
    //1.加载数据
    val conf:SparkConf = new SparkConf().setAppName("UrlCount").setMaster("local[2]")
    //spark程序入口
    val sc: SparkContext = new SparkContext(conf)
    //载入数据
    val rdd1: RDD[String] = sc.textFile("e:/access.log")
 
    //2.对数据进行计算 w,1 h,1
    val rdd2: RDD[(String, Int)] = rdd1.map(line => {
      val s: Array[String] = line.split("\t")
      //标注为出现1次
      (s(1), 1)
    })
 
    //3.将相同的网址进行累加求和  网页,201
    val rdd3:RDD[(String, Int)] = rdd2.reduceByKey(_+_)
 
    //4.排序 取出前三
    val rdd4: Array[(String, Int)] = rdd3.sortBy(_._2, false).take(3)
 
    //5.遍历打印
    rdd4.foreach(x => {
      println("网址为:" + x._1 + "访问量为:" + x._2)
    })
 
    //6.关闭资源
    sc.stop()
  }
}

结果:

二、需求:求出每个学院 访问第一位的网址

import java.net.URL
 
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
 
/**
  * 需求:求出每个学院 访问第一位的网址
  * bigdata:video(直播)
  * java:video
  * python:teacher
  */
object UrlGroupCount {
  def main(args: Array[String]): Unit = {
    //1.创建sparkContext
    val conf: SparkConf = new SparkConf().setAppName("UrlGroupCount").setMaster("local[2]")
    val sc: SparkContext = new SparkContext(conf)
 
    //2.加载数据
    val rdd1: RDD[String] = sc.textFile("e:/access.log")
 
    //3.切分
    val rdd2: RDD[(String, Int)] = rdd1.map(line => {
      val s: Array[String] = line.split("\t")
      //网址,1
      (s(1), 1)
    })
 
    //4.求出总的访问量  网址,总的访问量
    val rdd3: RDD[(String, Int)] = rdd2.reduceByKey(_+_)
 
    //5.取出学院
    val rdd4: RDD[(String, String, Int)] = rdd3.map(x => {
      //拿到ur
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lmr廖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值