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)
朴素贝叶斯 算法介绍: 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法. 朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,在没有其它可用信息下,我 ...
随机推荐
- CommonJS, AMD 和 RequireJS之间的关系(转载)
先说说CommonJS CommonJS - 大家是不是觉得JavaScript仅仅是一个客户端的编译语言,其实JavaScript设计之初不仅仅是针对客户端设计的语言.后来只是由于Web的迅速流行, ...
- Dw CS 破解
据说,CS5的破解也可以用CS6的破解方法,不过可能本人太菜,有所失误,总是不成功,安装成功后,打开总是提示 : 我们无法开始您的Adobe Dreamweaver cs5 subscription ...
- XE2 IntraWeb尝试
新建--选择--确定 简单放几个控件在TIWForm1上面,运行,生成一个项目服务器: 复制 URL http://127.0.0.1:8888/$/start 打开网页.
- DP套DP HDOJ 4899 Hero meet devil(国王的子民的DNA)
题目链接 题意: 给n长度的S串,对于0<=i<=|S|,有多少个长度为m的T串,使得LCS(S,T) = i. 思路: 理解的不是很透彻,先占个坑. #include <bits/ ...
- intellij 调试spark scala 程序 报错
spark用的是cdh spark-2.0.1 package main.scala import org.apache.spark.rdd.RDD import org.apache.spark.{ ...
- WebViewJavascriptBridge使用说明(iOS)
由于现在很多产品都是有安卓版跟ios版,就意味着同一样东西要出两套,由两组人去完成,不仅增加了开发成本,也大大加剧了维护成本.聪明的coder想出了跨平台的思路,用html写页面,分别用webview ...
- Exchange超级实用命令行
发现Powershell很强大以后,就欲罢不能了.来点干货
- 【Beta】Daily Scrum Meeting第一次
1.任务进度 学号 已完成 接下去要做 502 更换网络框架为okHttp 搭建好PHP单元测试环境,写出PHP测试的demo 509 PHP的login返回值:插入数据改为单行插入:系负责人更新单行 ...
- “LC.exe”错误
错误“LC.exe”已退出,代码为 -1. 可能的原因是: 这个第三方组件是个商业组件,他在组件的主使用类定义了 LicenseProvider(typeof(LicFileLicenseProvid ...
- python 函数之装饰器,迭代器,生成器
装饰器 了解一点:写代码要遵循开发封闭原则,虽然这个原则是面向对象开发,但也适用于函数式编程,简单的来说,就是已经实现的功能代码不允许被修改但 可以被扩展即: 封闭:已实现功能的代码块 开发:对扩张开 ...