日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

获取系统URL访问的前三名(通过Scala方式实现/通过Spark方式实现),Spark将URL访问日志进行分类并通过自定义Partitioner的方式将文件写入到不同分区上

發(fā)布時(shí)間:2024/9/27 windows 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 获取系统URL访问的前三名(通过Scala方式实现/通过Spark方式实现),Spark将URL访问日志进行分类并通过自定义Partitioner的方式将文件写入到不同分区上 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、創(chuàng)建Maven項(xiàng)目

創(chuàng)建的過(guò)程參考:http://blog.csdn.net/tototuzuoquan/article/details/74571374

2、準(zhǔn)備日志文件

url.log的內(nèi)容類(lèi)似:

20160321101954 http://java.toto.cn/java/course/javaeeadvanced.shtml 20160321101954 http://java.toto.cn/java/course/javaee.shtml 20160321101954 http://java.toto.cn/java/course/android.shtml 20160321101954 http://java.toto.cn/java/video.shtml 20160321101954 http://java.toto.cn/java/teacher.shtml 20160321101954 http://java.toto.cn/java/course/android.shtml 20160321101954 http://php.toto.cn/php/teacher.shtml 20160321101954 http://net.toto.cn/net/teacher.shtml 20160321101954 http://java.toto.cn/java/course/hadoop.shtml 20160321101954 http://java.toto.cn/java/course/base.shtml 20160321101954 http://net.toto.cn/net/course.shtml 20160321101954 http://php.toto.cn/php/teacher.shtml 20160321101954 http://net.toto.cn/net/video.shtml 20160321101954 http://java.toto.cn/java/course/base.shtml 20160321101954 http://net.toto.cn/net/teacher.shtml 20160321101954 http://java.toto.cn/java/video.shtml 20160321101954 http://java.toto.cn/java/video.shtml

3、編寫(xiě)UrlCount1,代碼如下:

通過(guò)scala的方式獲取日志文件中每類(lèi)次主機(jī)名出現(xiàn)的前3名

package cn.toto.sparkimport java.net.URLimport org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext}/*** 獲取到每類(lèi)host出現(xiàn)的次數(shù)的前三名,下面通過(guò)sacle的方式實(shí)現(xiàn)* Created by toto on 2017/7/8.*/ object UrlCount1 {def main(args: Array[String]): Unit = {//使用local就是啟動(dòng)一個(gè)線程,local[2]表示啟動(dòng)2個(gè)線程,Local[*]表示根據(jù)機(jī)器來(lái)自動(dòng)分配val conf = new SparkConf().setAppName("UrlCount1").setMaster("local[2]")val sc = new SparkContext(conf)val lines:RDD[String] = sc.textFile(args(0))//splitval urlAndOne = lines.map(line =>{val fields = line.split("\t")val url = fields(1)//封裝成url,次數(shù)(url,1)})//聚合,計(jì)算某個(gè)url出現(xiàn)了多少次,所以要聚合一下,這里做了Cache,問(wèn)題是當(dāng)數(shù)據(jù)量很大的時(shí)候,可能出現(xiàn)內(nèi)存溢出val summedUrl = urlAndOne.reduceByKey(_+_).cache()println(summedUrl)//返回的是[(host,url,次數(shù))]這樣的元組//groupBy(_._1) 表示按照host進(jìn)行分組val grouped = summedUrl.map(t => {val host = new URL(t._1).getHost//主機(jī)名,url,次數(shù)(host,t._1,t._2)}).groupBy(_._1)println(grouped)//_ :表示上面的集合//toList :表示它轉(zhuǎn)化為集合//sortBy :這里是scala的集合//_._3 :表示按照次數(shù)進(jìn)行排序//.reverse.take(3) :表示取前3名val result = grouped.mapValues(_.toList.sortBy(_._3).reverse.take(3))println(result.collect().toBuffer)sc.stop()} }

運(yùn)行參數(shù)配置:

運(yùn)行結(jié)果:


4、通過(guò)Spark的方式計(jì)算URL出現(xiàn)的前3名

代碼如下:

package cn.toto.sparkimport org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext}/*** 使用SparkRDD的方式取出每個(gè)子Host的出現(xiàn)的次數(shù)的前3名,并循環(huán)打印出來(lái)。* Created by toto on 2017/7/8.*/ object UrlCount2 {/*** 使用了Spark的RDD緩存機(jī)制,這樣再進(jìn)行排序時(shí)不會(huì)出現(xiàn)內(nèi)存溢出* @param args*/def main(args: Array[String]): Unit = {//后續(xù)這些Url就從數(shù)據(jù)庫(kù)中獲取到val urls = Array("http://java.toto.cn","http://php.toto.cn","http://net.toto.cn")val conf = new SparkConf().setAppName("UrlCount1").setMaster("local[2]")val sc = new SparkContext(conf)val lines:RDD[String] = sc.textFile(args(0))//splitval urlAndOne = lines.map(line => {val fields = line.split("\t")val url = fields(1)//(url,次數(shù))(url,1)})//聚合val summedUrl = urlAndOne.reduceByKey(_+_)//循環(huán)過(guò)濾for(u <- urls) {//過(guò)濾(值過(guò)濾出urls這些的內(nèi)容)val insRdd = summedUrl.filter(t => {val url = t._1url.startsWith(u)})val result = insRdd.sortBy(_._2, false).take(3)println(result.toBuffer)}sc.stop()} }

運(yùn)行參數(shù)配置:

運(yùn)行結(jié)果:


5、將url進(jìn)行篩選,分類(lèi),并通過(guò)自定義分區(qū)將數(shù)據(jù)存儲(chǔ)到不同的文件中

package cn.toto.sparkimport java.net.URLimport org.apache.spark.rdd.RDD import org.apache.spark.{Partitioner, SparkConf, SparkContext}import scala.collection.mutable/*** 自定義Partitioner,按照不同的子主機(jī)名存儲(chǔ)到不同的分區(qū)文件中* Created by toto on 2017/7/8.*/ object UrlCount3 {/*** 如果把每個(gè)學(xué)員單獨(dú)產(chǎn)生的內(nèi)容都寫(xiě)入到磁盤(pán)文件中* @param args*/def main(args: Array[String]): Unit = {val conf = new SparkConf().setAppName("UrlCount1").setMaster("local[2]")val sc = new SparkContext(conf)val lines : RDD[String] = sc.textFile("E:\\workspace\\url.log")//splitval urlAndOne = lines.map(line => {val fields = line.split("\t")val url = fields(1)(url,1)})//聚合val summedUrl = urlAndOne.reduceByKey(_+_).cache()val rdd1 = summedUrl.map(t => {val host = new URL(t._1).getHost//(host,(url,出現(xiàn)次數(shù)))(host,(t._1,t._2))})val urls = rdd1.map(_._1).distinct().collect()val partitioner = new HostPartitioner(urls)//安裝自定義的分區(qū)器重新分區(qū)val partitionedRdd = rdd1.partitionBy(partitioner)val result = partitionedRdd.mapPartitions(it => {it.toList.sortBy(_._2._2).reverse.take(3).iterator})result.saveAsTextFile("E:\\workspace\\out")sc.stop()} }class HostPartitioner(urls: Array[String]) extends Partitioner {val rules = new mutable.HashMap[String,Int]()var index = 0for(url <- urls){rules.put(url,index)index += 1}override def getPartition(key: Any): Int = {val url = key.toString//如果取到了值就返回url,否則返回0rules.getOrElse(url,0)}//分區(qū)數(shù)量override def numPartitions: Int = urls.length }

最終的輸出內(nèi)容是:

總結(jié)

以上是生活随笔為你收集整理的获取系统URL访问的前三名(通过Scala方式实现/通过Spark方式实现),Spark将URL访问日志进行分类并通过自定义Partitioner的方式将文件写入到不同分区上的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色呦呦中文字幕 | 看了让人下面流水的视频 | 九九九在线观看 | 裸体男女树林做爰 | 看毛片网 | 国产乱码精品一区二区 | 天天狠天天操 | 欧美性大交 | fc2成人免费视频 | 一区二区三区四区亚洲 | 成人综合一区二区 | 99热久久这里只有精品 | 波多野结衣久久久久 | 日本高清不卡视频 | 欧美成人a视频 | 成人黄色短视频在线观看 | 狠狠五月天 | 欧美人和黑人牲交网站上线 | 日韩av在线播 | 99色影院 | 日本加勒比中文字幕 | 波多野av在线 | 欧美视频久久久 | 国产不雅视频 | 亚洲破处视频 | aaaa视频| 天天国产视频 | 欧美精品乱码99久久蜜桃 | 相亲对象是问题学生动漫免费观看 | 久久三级网 | 男女搞黄网站 | 特级特黄刘亦菲aaa级 | 蜜桃成人在线 | 国产精品成人网站 | 偷偷操不一样 | 制服丝袜第一页在线观看 | 奇米第四色7777 | 日韩免费一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 97超碰人人| 国产无人区码熟妇毛片多 | 美女福利在线观看 | 国产伦人伦偷精品视频 | 欧美日韩国产成人在线 | 双性人bbww欧美双性 | 黄色工厂这里只有精品 | 给我免费观看片在线电影的 | 青草视频在线 | 免费av导航| 91吃瓜今日吃瓜入口 | 国产91丝袜在线播放0 | 日日夜夜狠 | 视频二区中文字幕 | 一级片在线免费播放 | 久久9久久| 青青艹在线观看 | 天堂资源在线播放 | 色撸撸在线观看 | 精品国产乱码久久久久久88av | 韩日一区二区三区 | 韩国成人理伦片免费播放 | 欧美a级网站 | 日韩精品国产一区 | 国产又粗又硬又黄的视频 | 天天色综合图片 | 一区视频在线播放 | 色九月婷婷 | 热久久这里只有精品 | 中文字幕乱码亚洲精品一区 | 中文字幕高清在线 | jizzjizz中国精品麻豆 | 久艹伊人 | 免费黄色网址在线观看 | av成人在线免费观看 | 欧美1页| 国产成人一区 | 欧美日韩精品一区二区三区视频播放 | 性色影院| 日本xxxx18高清hd | 一曲二曲三曲在线观看中文字幕动漫 | 国产精品二区三区 | 亚洲精品中文字幕乱码无线 | 2019国产精品 | 青青草华人在线视频 | 国产精品拍拍 | 久久a毛片| 在线免费观看 | 美女视频在线免费观看 | 欧美黑人粗大 | 57pao国产成永久免费视频 | 久久精品国产99精品国产亚洲性色 | 波多野结衣一区二区 | 国产黄色av片 | 一级片一区 | a点w片| 免费不卡av | 深爱激情综合网 | 黄色成年网站 | 姐姐的秘密韩剧免费观看全集中文 |