Spark使用实例
1.介绍
2.实例
object SimilarQuery {
val QUERY_LOG_PATH: String = "/search_log/"
val SIMILAR_QUERY_PATH: String = "/similar_query/"
def main(args: Array[String]) = {
val conf = new SparkConf().setAppName("MigameSimilarQuery")
val sc = new SparkContext(conf)
//输入/输出路径
val input = QUERY_LOG_PATH
val output = SIMILAR_QUERY_PATH
//获取共现查询
val lines = sc.sequenceFile[BytesWritable, BytesWritable](input)
val similarQ = processQueryLog(lines)
val hadoopCfg = new Configuration(sc.hadoopConfiguration)
val fs: FileSystem = FileSystem.get(hadoopCfg)
fs.delete(new Path(output), true)
similarQ.saveAsTextFile(output)
sc.stop()
}
//获取一天的共现query
def processQueryLog(rdd: RDD[(BytesWritable, BytesWritable)]) = {
rdd.map(log => {
//源文件是thrift序列化后的scribe日志,里面记录了一次用户的查询(uid, query, time)
val deserializer: TDeserializer = new TDeserializer(new TCompactProtocol.Factory)
//找到一个用户今天的查询
val searchLog: SearchLog = new SearchLog
deserializer.deserialize(searchLog, log._2.copyBytes())
(searchLog.getUid, (searchLog.getCommon.getTime, query))
}).filter(!_._1.isEmpty).groupByKey().flatMap {
case (uid, iter) => {
//处理共现查询
val queries = iter.toList
queries.sortBy(_._1)
//lambda运算,返回list,元素是一个元组
val relateQueries = for (i <- 0 to queries.length - 2;
j <- i + 1 to queries.length - 1) yield {
(queries(j)._2, queries(i)._2)
}
//list过滤和去重,执行map过程,打散输出
relateQueries.filter(_._1 != null).distinct.map(t => (t, 1))
}
}.reduceByKey(_ + _).map(query => {
query._1._1 + "\t" + query._1._2 + "\t" + query._2
})
}
}
Spark使用实例的更多相关文章
- 【原创 Hadoop&Spark 动手实践 6】Spark 编程实例与案例演示
[原创 Hadoop&Spark 动手实践 6]Spark 编程实例与案例演示 Spark 编程实例和简易电影分析系统的编写 目标: 1. 掌握理论:了解Spark编程的理论基础 2. 搭建 ...
- Spark Streaming实例
Spark Streaming实例分析 2015-02-02 21:00 4343人阅读 评论(0) 收藏 举报 分类: spark(11) 转载地址:http://www.aboutyun.co ...
- Spark Job-Stage-Task实例理解
Spark Job-Stage-Task实例理解 基于一个word count的简单例子理解Job.Stage.Task的关系,以及各自产生的方式和对并行.分区等的联系: 相关概念 Job:Job是由 ...
- 5个Spark应用实例
Spark简介: Spark是UC Berkeley AMP lab开发的一个集群计算的框架,类似于Hadoop,但有很多的区别.最大的优化是让计算任务的中间结果可以存储在内存中,不需要每次都写入HD ...
- Spark记录-实例和运行在Yarn
#运行实例 #./bin/run-example SparkPi 10 #./bin/spark-shell --master local[2] #./bin/pyspark --master l ...
- Spark源码系列(八)Spark Streaming实例分析
这一章要讲Spark Streaming,讲之前首先回顾下它的用法,具体用法请参照<Spark Streaming编程指南>. Example代码分析 val ssc = )); // 获 ...
- spark streaming 实例
spark-streaming读hdfs,统计文件中单词数量,并写入mysql package com.yeliang; import java.sql.Connection; import java ...
- Spark GraphX实例(1)
Spark GraphX是一个分布式的图处理框架.社交网络中,用户与用户之间会存在错综复杂的联系,如微信.QQ.微博的用户之间的好友.关注等关系,构成了一张巨大的图,单机无法处理,只能使用分布式图处理 ...
- 朴素贝叶斯算法原理及Spark MLlib实例(Scala/Java/Python)
朴素贝叶斯 算法介绍: 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法. 朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,在没有其它可用信息下,我 ...
随机推荐
- vue-loader配合webpack的使用及安装
vue-loader配合webpack的使用及安装: 工程文件简单的目录结构 index.html main.js 入口文件 App.vue vue文件,官方推荐命名法 package.jso ...
- 转:MYSQL连接字符串参数解析(解释)
被迫转到MySQL数据库,发现读取数据库时,tinyint类型的值都被转化为boolean了,这样大于1的值都丢失,变成true了.查阅资料MySQL中无Boolean类型,都是存储为tinyint了 ...
- java方法重载(overload)、重写(override);this、super关键简介
一.方法重载: 条件:必须在一个类中,方法名称相同,参数列表不同(包括:数据类型.顺序.个数),典型案例构 造方重载. 注意:与返回值无关 二.方法重写: 条件: (1)继承某个类或实现某接口 (2 ...
- BestCoder#49
Untitled Accepts: 504 Submissions: 1542 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/6 ...
- 【转】request.getServletPath()和request.getPathInfo()用法
转自:https://my.oschina.net/sub/blog/182408 在 Web 中,我们通常需要获取 URL 相对于 Webapp 的路径,主要是下面的几个方法: request.ge ...
- [svg 翻译教程]Polyline(折线)polygon(多边形)
原文: http://tutorials.jenkov.com/svg/polygon-element.html Polyline 虽然说这个 元素我没用过,但是还是蛮强大的,也翻译下 示例 < ...
- VB6与VB.NET对照表
VB6与VB.NET对照表 VB6.0 VB.NET AddItem Object名.AddItem Object名.Items.Add ListBox1.Items.Add ComboBox1.It ...
- 软件工程:Wordcount程序作业
由于时间的关系,急着交作业,加上这一次也不是那么很认真的去做,草草写了“Wordcount程序”几个功能,即是 .txt文件的读取,能计算出文件内容的单词数,文件内容的字符数,及行数. 这次选用C来做 ...
- linux常用命令总结
du -sh * 当前目录下所有文件占用空间大小,df 空间占用 top 资源使用情况 M 根据驻留内存大小进行排序 tail 1.tail -f filename说明:监视filename文件的尾 ...
- ubuntu vps 安装 jdk
Introduction Java is a programming technology originally developed by Sun Microsystems and later acq ...