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)
朴素贝叶斯 算法介绍: 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法. 朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,在没有其它可用信息下,我 ...
随机推荐
- Chrome 中的彩蛋,一款小游戏,你知道吗?
今天看到一篇文章,介绍chrome中的彩蛋,带着好奇心进去看了一眼,没想到发现了一款小游戏,个人觉得还不错,偶尔可以玩一下,放松放松心情!^_^ 当 Chrome 无法连接到互联网时, 或者上着网突然 ...
- 【Centos】修改网卡名字&随之出现的问题
自从学了工具tcpdump之后,里面会需要涉及到针对某个网卡抓包,因而会输入网卡名字,可是centOS7蛋疼的网卡默认命名实在是让人心碎,所以就想到了要修改网卡名字,步骤如下:(以下步骤涉及到我的错误 ...
- hellocharts包的使用心得
首先将jar包导入Libs里面然后add进入于activity中调用 xml中加入布局 <lecho.lib.hellocharts.view.LineChartView android:id= ...
- jquery函数理解与运用
javascript中有多种不用的方式去理解函数,函数类似于我们以前学过的数学函数,但是在程序设计中,我是按照下面的方式进行理解: 函数的理解: 函数是一个代码块,内容被包含在函数内,通常我们是把一些 ...
- JavaScript笔试必备语句【转】
1. document.write( " "); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document- >html- >(head,bod ...
- Jquery.load() 使用
调用load方法的完整格式是:load( url, [data], [callback] ) url:是指要导入文件的地址. data:可选参数:因为Load不仅仅可以导入静态的html文件,还可以导 ...
- 线性分式变换(linear fractional transformation)
线性分式变换(linear fractional transformation)的名称来源于其定义的形式:(ax+b)/(cx+d),其中分子分母是线性的,然后最外层是一个分式形式,所以叫做这个名字, ...
- JQM开发Tips
1.radio Button 点击后有时候有高亮样式,有时候没有 解决方案: $("#task_form label").click(function () { $("# ...
- hexo建个人博客
已经在腾讯云获得了域名和服务器,想着既然已经这样了,就折腾折腾自己的个人博客主页吧. 考虑再三决定用github pages来实现我的博客.github Pages可以被认为是用户编写的.托管在git ...
- dialog
function showDialog(){ var $by = $(window), obj = $('.dialog'), brsW = $by.width(), brsH = $by.heigh ...