Spark基础编程案例
案例一:求网站的访问量
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/cc185c1cf548058711c8c78df16f919e.png)
- 求出访问量最高的两个网页
- 要求显示:网页名称、访问量
import org.apache.spark.{SparkConf, SparkContext}
/**
* @Autho: Administrator and wind
* @Version: 2019/11/12 & 1.0
*
*/
object MyLogCount {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setMaster("local").setAppName("MyLogCount")
val sc = new SparkContext(conf)
/**
* 192.168.88.1 - - [30/Jul/2017:12:54:42 +0800] "GET /MyDemoWeb/web.jsp HTTP/1.1" 200 239
*
* (web.jsp,1)
*/
val rdd1 = sc.textFile("E:\\test\\localhost_access_log.2017-07-30.txt")
.map(
line => {
//解析字符串
//1、得到两个引号之间的东西
val index1 = line.indexOf("\"")
val index2 = line.lastIndexOf("\"")
val line1 = line.substring(index1+1,index2)// GET /MyDemoWeb/web.jsp HTTP/1.1
println(line1)
//2、得到两个空格之间的东西
val index3 = line1.indexOf(" ")
val index4 = line1.lastIndexOf(" ")
val line2 = line1.substring(index3+1,index4)
println(line2)
//得到jsp名字
val jspName = line2.substring(line2.lastIndexOf("/")+1)
(jspName,1)
}
)
/**
* 聚合
*/
println("-----------------")
val rdd2 = rdd1.reduceByKey(_+_)
//按照value排序
val rdd3 = rdd2.sortBy(_._2,false)
//取出访问量最高的两个网页
rdd3.take(2).foreach(println)
sc.stop()
}
}
案例二:创建自定义分区