一切理论源于实践,理论最终也要为实践服务。产生于他,服务与他,在生活中只有敢尝试,再有可能进步,光想是不会成功的
——————————送给努力实践的你
分享一个实际生产案例:
统计每个域名的流量和(域名字段11,流量字段20)
import org.apache.spark.{SparkConf, SparkContext}
object LogAppscala {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf()
.setMaster("local[2]").setAppName("SparkContext")
val sc = new SparkContext(sparkConf)
val lines = sc.textFile("file:///E:\\data.txt")
lines.map(x => {
val temp = x.split("\t")
val domain =temp(10)
var repson =0L
try{
repson = temp(19)toLong
}catch{
case e:Exception =>println("----")
}(domain,repson)
}).reduceByKey(_+_).collect().foreach(println)
lines.take(2).foreach(println)
sc.stop()
}
}
注意:流量这种类型是Long,所以这里要加上toLong
要考虑到流量为0的情况,所以加上try,这里的操作
其中还遇到的一个问题,出在上传路径哪里的写法
实例二
访问次数最多的URL(0)并排序
object LogAppscala {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf()
.setMaster("local[2]").setAppName("SparkContext")
val sc = new SparkContext(sparkConf)
val lines = sc.textFile("file:///E:\\data.txt")
lines.map(x => {
val temp = x.split("\t")
(temp(0),1L)//(url,count)
}).reduceByKey(_+_).sortBy(_._2, false).take(10).foreach(println)
sc.stop()
}
}