一、需求:计算网页访问量前三名
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 => {
//拿到url
val url: String = x._1
//java中拿到主机名
val host: String = new URL(url).getHost.split("[.]")(0)
//元组输出
(host, url, x._2)
})
//6.按照学

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

被折叠的 条评论
为什么被折叠?



