关注分享主机优惠活动
国内外VPS云服务器

Spark全面的研究笔记(III)SOGOU搜索日志分析(Sogou搜索历史记录)

摘要:学习确认对一个数据数据网站的两个要求是让用户使用读取的日志数据查询不同的日志数据字段,并封装在数据集中,功能和功能,用于处理不同的业务统计分析,将数据集封装在数据集中,并使用更一般和有用的中国分区,以处理一系列模型,各种业务统计分析。

学习致谢:

https://www.bilibili.com/video/bv1xz4y1m7cv?p=36

1。数据

数据网站:http://www.sogou.com/labs/resource/q.php

2。要求

要查询Sougoq用户日志数据中的各个字段,请使用SparkContext读取日志数据,将其封装在RDD数据集中,并调用转换和操作功能以处理各种业务统计分析。

3。测试单词分词工具

使用中国流行的分区:HANLP,一种用于生产环境的自然语言处理工具包。 HANLP是由一组模型和算法组成的Java工具包。目的是普及在生产环境中使用自然语言处理。官方网站:http://www.hanlp.com/添加了maven依赖关系

com.hankcshanlpportable - 1.7.7导入com.hankcs.hanlp.hanlpimport com.hankcs.hanlp.seg.common.common.termiport scala.collection.javaconverters.javaconverters._object hanlptest hanlptest hanlptest hanlptest hanlptest {对象hanlptest { "han:args:args:arss:arss:arss:arss:arss:arss:arss:array:arss:array:arss:array:array=argray Beginner's Case] ​​"VAL Terminology:util.List [Term] = hanlp.segment(words)// Segment words println (terms)// Java list: [[/w, hanlp/nx,hanlp/nx,capeat/vn,n,]/w] println(terms.ascala.map(_。word)/hanlp,start,case,case,])val clealwords1:string = words.replaceall(replaceall(“ hm [/nn]) “ println(cleanwords1)// hanlp简介案例案例println(hanlp.segment(cleanwords1).asscala.map(_。word))// arraybuffer(hanlp,get got got go got,case case)val log =“ downlation.it.com.cn/softweb/software/firewall/antivirus/20036/179“”“”“ val cleanwords2 = log.split(“ ils+”)(2)// 7 [360 Security Guard println println println(hanlp.segment(hanlp.segment(hanlp.segment(hanlps2)

执行结果

4。代码实现

com.hankcs.hanlp.hanlpimport org.apache.spark.rdd.rddimport org.apache.spark。 {SparkConf,SparkContext}导入scala.collection.mutable.mutable/** *作者 *作者 *desc要求:SUGAS搜索条件的搜索术语 *1。搜索不同时期的普及 */对象SougousearchAnalysis {def main(args:args:args:array [array [array [string]):unit = uite = uite = uite = {// = {// todo0。环境val conf:sparkconf = new sparkconf()。 setAppName(“ spark”)。 setMaster(“ local [*]”)val sc:sparkContext = new sparkext(conf)/setlog。加载datavalline:rdd [string] = sc.textfile(“ data/sogouq.sample”)// todo2。 data //数据val sogoureCordrdd的封装:rdd [sogourecord] = lines.map(line => {//有一个映射:arr(0),arr(1),arr(2),arr(3),arr(3).toint,.toint,arr(4).toint,arr(5))})//剪切数据val wordsrdd:rdd [string] = sogouRecorddd.flatmap(record => {// FlatMap是进出的东西,360保安========== = = =》 [360,Surfing Guard words words:String:String:String:String:String:String:string = Record.QueRece.Quere.QueryS.ReceplAceS.Recrepl(replaCeal) Security Guard Import Scala.collection.javaconverters ._/// Java Collection hanlp.segment(wordststr).asscala.map(_.. // 1 Popular Search Terms val result1: array [(string, int)] = wordsrddd .filter( “)&&!等于(“+”)。映射(((_,1))。降低bykey(_+_)。sortby(_._._._ 2,false(10).take(10).take(10).take(10).take(10)/fals(_.__________________________________________________________。 out and粉碎// 360safeguard ==》 [360,保障] val wordsstr:string = record.querywords.replaceall(“ // [| //],“”)// 360保安后卫导入scala.collection.javaconverters ._ //将java collections转换为scala collections val单词:umfufl.buffer [string] = hanlp.segment = hanlp.sement(hanlp.sempter(wordsstr) string),int)] =用户danddddddddddddddd .filter(word =>! timestr:string = record.querytime hourtime hourandminunesttr:string = timestr.substring(0,5)(hourandminunstr,1))结果2.foreach(println)结果3.foreach(println)// todo5。resourcesc.stop()} // preama sc.stop()} //准备示例类以封装数据}/**单击用户搜索以记录记录。 *@param clamic clighrank用户序列编号单击 *@param clamicurl单击用户的URL */case class sogourecord(queryTime:string,userId:userId:string,queryWords:string,consing worders:string,resulte ultrank:int,clickrank:int,clickrank:int,clickurl:clickurl:clickurl:clint:string:string))

未经允许不得转载:主机频道 » Spark全面的研究笔记(III)SOGOU搜索日志分析(Sogou搜索历史记录)

相关推荐

评论 抢沙发

评论前必须登录!