Spark之搜狗日志查询实战

1、下载搜狗日志文件:

地址:http://www.sogou.com/labs/resource/chkreg.php

2、利用WinSCP等工具将文件上传至集群。

3、创建文件夹,存放数据:

mkdir /home/usr/hadoopdata

4、将搜狗日志数据移到(mv命令)3中创建的目录下,并解压

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.2hadoop fs-mkdir /sogouminihadoop fs-put /home/chenjj/hadoopdata/testdata/SogouQ.sample2 /sogouminihadoop fs-ls /sogoumini/SogouQ.sample2

结果:

7、进入spark安装目录下bin,启动spark-shell,由于本集群采用yarn模式部署的,故启动时选取yarn,其他参数可自行配置。

cd spark/spark-2.1.1-bin-hadoop2.6/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==6)——筛选出格式正确的数据mapsogouminirdd.count()——查看格式正确的有多少条,是否所有数据均正确val firstmapsogouminirdd=mapsogouminirdd.filter(_(3).toInt==1).filter(_(4).toInt==1)——筛选出当日搜索结果排名第一同时点击结果排名也是第一的数据量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(1),1)).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)——存结果

本文来自企鹅号 - BUAA党学习微平台媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AhDung

弹出移动设备时报正在使用肿么办

当确信没有程序在占用该设备时,这种提示让我觉得很操蛋,NTM说明白点会死啊~好吧,这时还不忍心直接拔的童鞋可以接着往下看:

16720
来自专栏腾讯云Elasticsearch Service

Elasticsearch调优实践

本文基于ES 5.6.4,从性能和稳定性两方面,从linux参数调优、ES节点配置和ES使用方式三个角度入手,介绍ES调优的基本方案。当然,ES的调优绝不能一概...

48720
来自专栏运维

ELK分析ngx_lua_waf软件防火墙日志

https://github.com/loveshell/ngx_lua_waf

35210
来自专栏企鹅号快讯

JDBC编程

前面我们已经讨论了数据库的安装和简单的使用,还没完成的可以先去Mysql的安装和Mysql数据库的简单操作回顾一下哦!今天我们来简单学习JDBC编程的准备和链...

35780
来自专栏jojo的技术小屋

原 web安全、XSS、CSRF、注入攻击

作者:汪娇娇 时间:2017年8月15日 当时也是看了一本书《白帽子讲web安全》,简单的摘录然后做了个技术分享,文章不是很详细,建议大家结合着这本书看哈。 w...

57370
来自专栏北京马哥教育

高可用集群基本概念与heartbeat文本配置接口

一、高可用集群基本概念: 什么是高可用集群: 所谓高可用集群,就是在出现故障时,可以把业务自动转移到其他主机上并让服务正常运行的集群构架 > 高...

38870
来自专栏Java工程师日常干货

Redis高级特性介绍及实例分析Redis基础类型回顾 Redis发展过程中的三种模式:主从、哨兵、集群 哨兵模式 Redis的简单事务 Redis持久化机制 发布与订阅消息 Redis案例设计

本文将为大家介绍Redis的一些高级特性以及结合一个具体的实际案例来对Redis进行设计分析。

22720
来自专栏java架构师

Hadoop学习5--配置本地开发环境(Windows+Eclipse)

一、导入hadoop插件到eclipse 插件名称:hadoop-eclipse-plugin-2.7.0.jar 我是从网上下载的,还可以自己编译。 放到ec...

32680
来自专栏程序员叨叨叨

compileSdkVersion 'android-24' requires JDK 1.8 or later to compile

今天,好久没有写Android程序的我突发奇想,想简单写一个每日任务APP。好的!新建工程->写好代码框架->开启模拟器->运行!哎哎哎?!那啥!咋报错了嘞?!...

13440
来自专栏后端技术探索

Restful 接口设计最佳事件

本小编这一年是在一家移动互联网公司做App后端接口设计开发工作,最近组内做了一次很大的重构,就是把接口完全根据restful规范进行设计重写。这么做的目的首先是...

14630

扫码关注云+社区

领取腾讯云代金券