teacher.log
http://bigdata.baidu.cn/zhangsan http://bigdata.baidu.cn/zhangsan http://bigdata.baidu.cn/lisi http://bigdata.baidu.cn/lisi http://bigdata.baidu.cn/lisi http://bigdata.baidu.cn/lisi http://bigdata.baidu.cn/lisi http://bigdata.baidu.cn/wangwu http://bigdata.baidu.cn/wangwu http://javaee.baidu.cn/xiaoxu http://javaee.baidu.cn/xiaoxu http://javaee.baidu.cn/laoyang http://javaee.baidu.cn/laoyang http://javaee.baidu.cn/laoyang http://bigdata.baidu.cn/lisi http://bigdata.baidu.cn/lisi http://bigdata.baidu.cn/lisi http://bigdata.baidu.cn/lisi http://bigdata.baidu.cn/lisi http://bigdata.baidu.cn/wangwu http://bigdata.baidu.cn/wangwu http://javaee.baidu.cn/xiaoxu http://javaee.baidu.cn/xiaoxu http://javaee.baidu.cn/laoyang http://javaee.baidu.cn/laoyang http://javaee.baidu.cn/laoyang http://bigdata.baidu.cn/lisi http://bigdata.baidu.cn/lisi http://bigdata.baidu.cn/lisi http://bigdata.baidu.cn/lisi http://bigdata.baidu.cn/lisi http://bigdata.baidu.cn/wangwu http://bigdata.baidu.cn/wangwu http://javaee.baidu.cn/xiaoxu http://javaee.baidu.cn/xiaoxu http://javaee.baidu.cn/laoyang http://javaee.baidu.cn/laoyang http://javaee.baidu.cn/laoyang http://php.baidu.cn/laoli http://php.baidu.cn/laoliu http://php.baidu.cn/laoli http://php.baidu.cn/laoli
代码:
package dayo1 import java.net.URL import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object teacher2 { def main(args: Array[String]): Unit = { val conf = new SparkConf () .setAppName ( this.getClass.getSimpleName ) .setMaster ( "local[1]" ) val sc = new SparkContext ( conf ) val lines = sc.textFile ( "E:\\teacher.log" ) val overAll: RDD[((String, String), Int)] = lines.map ( tp => { val teacher: String = tp.split ( "/" ).last val host = new URL ( tp ).getHost val subject = host.substring ( 0, host.indexOf ( "." ) ) ((teacher, subject), 1) } ) //所有科目和老师的前三 val topOverAll = overAll.reduceByKey ( _ + _ ).sortBy ( -_._2 ).take ( 3 ).foreach ( println ) //每个科目前两名的老师 val topGroup = overAll.reduceByKey ( _ + _ ).groupBy ( _._1._2 ).mapValues ( _.toList.sortBy ( -_._2 ).take ( 2 ) ).foreach ( println ) sc.stop () } }
原文:https://www.cnblogs.com/wangshuang123/p/11058723.html