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)
朴素贝叶斯 算法介绍: 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法. 朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,在没有其它可用信息下,我 ...
随机推荐
- z-stack协议uart分析(DMA)
1.从ZMain里面的main函数开始分析 2.进入int main( void ); HalDriverInit(); //硬件相关初始化,有DMA初始化和UART初始化 3.进入HalDriv ...
- selenium使用笔记(一)
有时候在交流群里经常会看到这样的问题,selenium能进行性能测试吗?selenium1和selenium2有什么区别等等问题,在这里谈一下自己学习和工作以后对selenium的认识.我所记录的东西 ...
- POI的入门
POI快速入门 POI开发需要的七个步骤: 1.创建工作薄WorkBook对象 Workbook wb = new HSSFWorkbook(); //它是操作excel 2003版本 2.创建一个工 ...
- 关于在django框架里取已登录用户名字的问题
在 views里取值是这样的 request.user.username而在模板页面取值是这样的:{{request.user}} 判断是否通过验证是这样的 {% if request.user.is ...
- Maven打包生成可运行bat/sh脚本文件
利用Maven的appassembler-maven-plugin插件,就可以实现自动打包可运行的脚本,还可以跨平台. <plugin> <groupId>org ...
- solr4.5安装配置 linux+tomcat6.0+mmseg4j-1.9.1分词
首先先介绍下solr的安装配置 solr下载地址 (我这用的solr-4.5.0) 运行环境 JDK 1.5或更高版本 下载地址(Solr 4以上版本,要求JDK 1.6) 我用的JDK1.6 ) ...
- Python 进程间通信
from multiprocessing import Process,Queue import os,time,random def write(q): print('Process to writ ...
- tornado 学习笔记15 _ServerRequestAdapter分析
继承于HTTPMessageDeletegate,是HTTPMessageDeletegate的一种实现,用于处理请求消息. 15.1 构造函数 def __init__(self, ser ...
- Day 2:增加SplashScreen
If you want to add just single image, then create a pic in the size of 480*800 and name it as Splash ...
- Python之路【第一篇】python基础
一.python开发 1.开发: 1)高级语言:python .Java .PHP. C# Go ruby c++ ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...