Spark之搜狗日志查询实战
1、下载搜狗日志文件:
地址:http://www.sogou.com/labs/resource/chkreg.php
2、利用WinSCP等工具将文件上传至集群。
3、创建文件夹,存放数据:
mkdir /home/usr/hadoopdata
4、将搜狗日志数据移到(mv命令)3中创建的目录下,并解压
tar -zxvf SogouQ.mini.tar.gz
5、查看解压后文件格式
file SogouQ.sample
显示:
不是UTF-8,用head/cat命名查看,中文乱码(影响后续进程),需对文件格式进行转换:
iconv -f gb2312 SogouQ.sample -o SogouQ.sample2
再次查看即可正常显示中文。
6、启动集群(Hadoop、spark)。启动后,进入hadoop安装目录下,在hdfs上新建存放数据的目录,并将5中已进行格式转换后的日志文件放到hdfs上,再查看文件是否上传成功,命令如下:
cd /home/usr/hadoop/hadoop-2.8.
hadoop fs -mkdir /sogoumini
hadoop fs -put /home/chenjj/hadoopdata/testdata/SogouQ.sample2 /sogoumini
hadoop fs -ls /sogoumini/SogouQ.sample2
结果:
7、进入spark安装目录下bin,启动spark-shell,由于本集群采用yarn模式部署的,故启动时选取yarn,其他参数可自行配置。
cd spark/spark-2.1.-bin-hadoop2./bin
./spark-shell --master yarn --executor-memory 2g --driver-memory 2g
8、进入spark-shell后,执行以下操作,在每句后面有说明
val path="hdfs:///sogoumini/SogouQ.sample2"——声明路径
val sogouminirdd=sc.textFile(path)——读取hdfs上搜狗日志文件
sogouminirdd.count()——查看文件总共多少条记录
val mapsogouminirdd=sogouminirdd.map(_.split("\\s")).filter(_.length==)——筛选出格式正确的数据
mapsogouminirdd.count()——查看格式正确的有多少条,是否所有数据均正确
val firstmapsogouminirdd=mapsogouminirdd.filter(_().toInt==).filter(_().toInt==)——筛选出当日搜索结果排名第一同时点击结果排名也是第一的数据量
firstmapsogouminirdd.count()——查看结果是第多少条数据
注:(1) 元数据文件格式和官网描述不一致问题,官方说明排名和用户点击的顺序号之间是以Tab键分隔的,而实际是以空格分隔。
解决方法: spark分词时用split("\\s")代替split("\t"))。
9、使用toDebugString查看RDD血统(lineage)
firstmapsogouminirdd.toDebugString
结果如下:
可见其血统关系是:HadoopRDD->MappedRDD->MappedRDD->FilteredRDD->FilteredRDD->FilteredRDD。
10、用户ID查询次数排行榜:
val sortrdd=mapsogouminirdd.map(x=>(x(),)).reduceByKey(_+_).map(x=>(x._2,x._1)).sortByKey(false).map(x=>(x._2,x._1))
sortrdd.count()
11、将结果存放在hdfs中:
val outputpath="hdfs:///sogoumini/SogouQresult.txt"——存放路径及文件名
sortrdd.saveAsTextFile(outputpath)——存结果
Spark之搜狗日志查询实战的更多相关文章
- 使用Spark进行搜狗日志分析实例——统计每个小时的搜索量
package sogolog import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 使用Spark进行搜狗日志分析实例——map join的使用
map join相对reduce join来说,可以减少在shuff阶段的网络传输,从而提高效率,所以大表与小表关联时,尽量将小表数据先用广播变量导入内存,后面各个executor都可以直接使用 pa ...
- 使用Spark进行搜狗日志分析实例——列出搜索不同关键词超过10个的用户及其搜索的关键词
package sogolog import org.apache.hadoop.io.{LongWritable, Text} import org.apache.hadoop.mapred.Tex ...
- Spark RDD/Core 编程 API入门系列之动手实战和调试Spark文件操作、动手实战操作搜狗日志文件、搜狗日志文件深入实战(二)
1.动手实战和调试Spark文件操作 这里,我以指定executor-memory参数的方式,启动spark-shell. 启动hadoop集群 spark@SparkSingleNode:/usr/ ...
- 《图解Spark:核心技术与案例实战》介绍及书附资源
本书中所使用到的测试数据.代码和安装包放在百度盘提供 下载 ,地址为https://pan.baidu.com/s/1o8ydtKA 密码:imaa 另外在百度盘提供本书附录 下载 ,地址为http ...
- 《图解Spark:核心技术与案例实战》作者经验谈
1,看您有维护博客,还利用业余时间著书,在技术输出.自我提升以及本职工作的时间利用上您有没有什么心得和大家分享?(也可以包含一些您写书的小故事.)回答:在工作之余能够写博客.著书主要对技术的坚持和热爱 ...
- Spark Streaming 进阶与案例实战
Spark Streaming 进阶与案例实战 1.带状态的算子: UpdateStateByKey 2.实战:计算到目前位置累积出现的单词个数写入到MySql中 1.create table CRE ...
- 日志检索实战 grep sed
日志检索实战 grep sed 参考 sed命令 使用 grep -5 'parttern' inputfile //打印匹配行的前后5行 grep -C 5 'parttern' inputfile ...
- Spark SQL知识点大全与实战
Spark SQL概述 1.什么是Spark SQL Spark SQL是Spark用于结构化数据(structured data)处理的Spark模块. 与基本的Spark RDD API不同,Sp ...
随机推荐
- Circle
Circle Memory Limit: 32768KB 64bit IO Format: %lld & %llu Status Description Your task is so ...
- java爬虫--jsoup简单的表单抓取案例
分析需求: 某农产品网站的农产品价格抓取 网站链接:点击打开链接 页面展示如上: 标签展示如上: 分析发现每日价格行情包括了蔬菜,水果,肉等所有的信息,所以直接抓每日行情的内容就可以实现抓取全部数据. ...
- struts2常见错误
1.Caught exception while loading file struts-default.xml - [unknown location]解决办法:由于lib包冲突造成的,将两个解析x ...
- HTML学习笔记 cs2D3D展示基础 第十四节 (原创) 参考使用表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- copy11
方法二 这种方法也比较简单,主要针对你没有.apk包的情况,比如Android原生自带的APP(计算器.通讯录.短信...),可以通过adb 命令. 1,打开APP. 2,执行> adb log ...
- 《Linux命令行与shell脚本编程大全》 第四章
4.1 监测程序 1. ps 默认只显示运行在当前控制台下的属于当前用户的进程. 可以接很多选项,比如 -A表示所有进程 -e等. 2. ps -l 查看进程更多信息 UID:启动这些进程的用 ...
- 使用SQLPLUS创建用户名和表空间
用sqlplus为oracle创建用户和表空间用sqlplus为oracle创建用户和表空间用Oracle10g自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的, ...
- RE: Javascript分页处理
背景: 调用PHP后端给的接口,以实现分页的功能.由于我是没造轮子的能力,所以翻了不少技术博客,经过整合才算完成整个分页功能.从一番查阅中,不难看出大概分为两种不同的分页: 一种是纯前端的,就是在一次 ...
- sql连接语句
简述 简单回顾并总结下不同的表连接语句有什么异同之处以及一些概念. 建库语句如下 DROP DATABASE IF EXISTS `demo`; CREATE DATABASE `demo`; USE ...
- Lucene搜索引擎例子demo
一.导入相应的jar包 KAnalyzer3.2.0Stable.jar lucene-analyzers-3.0.1.jar lucene-core-3.0.1.jar lucene-highlig ...