六⼗五、Spark-综合案例(搜狗搜索⽇志分析)
搜狗实验室:搜索引擎查询⽇志库设计为包括约1个⽉(2008年6⽉)Sogou搜索引擎部分⽹页查询需求及⽤户点击情况的⽹页查询⽇志数据集合。为进⾏中⽂搜索引擎⽤户⾏为分析的研究者提供基准研究语料
⽬录
注:由于进⾏测试使⽤,迷你版数据就可以满⾜需求
原数据展⽰
注:原数据存在10000条 ,字段分别为:访问时间 \t ⽤户ID \t [查询词] \t 该URL在返回结果中的排名 \t ⽤户点击的顺序号\t  ⽤户点击的URL
业务需求
需求说明: 对SougouSearchLog进⾏分词并统计如下指标:
1. 热门搜索词
2. ⽤户热门搜索词(带上⽤户id)
3. 各个时间段搜索热度
业务逻辑
业务逻辑:针对SougoQ⽤户查询⽇志数据中不同字段,使⽤SparkContext读取⽇志数据,封装到RDD数据集中,调⽤Transformation函数和Action函数进⾏处理不同业务统计分析
分词⼯具
HanLP主要功能:基于HanLP最新技术,使⽤亿级通⽤语料库训练,直接API调⽤,简单⾼效!
Maven依赖
<dependency>
<groupId>com.hankcs</groupId>
<artifactId>hanlp</artifactId>
<version>portable-1.7.7</version>
</dependency>
HanLP⼊门案例
ample.spark
import java.util
import com.hankcs.hanlp.HanLP
import com.hankcs.hanlp.segmon.Termreplaceall()
/**
* Author tuomasi
* Desc HanLP⼊门案例
*/
object HanLPTest {
def main(args: Array[String]): Unit = {
val words = "[HanLP⼊门案例]"
val terms: util.List[Term] = HanLP.segment(words) //分段
println(terms) //直接打印java的list:[[/w, HanLP/nx, ⼊门/vn, 案例/n, ]/w]
llection.JavaConverters._
println(terms.asScala.map(_.word)) //转为scala的list:ArrayBuffer([, HanLP, ⼊门, 案例, ])
val cleanWords1: String = placeAll("\\[|\\]", "") //将"["或"]"替换为空"" //"HanLP⼊门案例"
println(cleanWords1) //HanLP⼊门案例
println(HanLP.segment(cleanWords1).asScala.map(_.word)) //ArrayBuffer(HanLP, ⼊门, 案例)
val log = """00:00:00 2982199073774412    [360安全卫⼠]  8 3 download.it/softweb/software/firewall/antivirus/20067/17938.html"""
val cleanWords2 = log.split("\\s+")(2) //[360安全卫⼠]
.replaceAll("\\[|\\]", "") //360安全卫⼠
println(HanLP.segment(cleanWords2).asScala.map(_.word)) //ArrayBuffer(360, 安全卫⼠)
}
}
控制台打印效果
代码实现
ample.spark
import com.hankcs.hanlp.HanLP

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。