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之搜狗日志查询实战的更多相关文章

  1. 使用Spark进行搜狗日志分析实例——统计每个小时的搜索量

    package sogolog import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 使用Spark进行搜狗日志分析实例——map join的使用

    map join相对reduce join来说,可以减少在shuff阶段的网络传输,从而提高效率,所以大表与小表关联时,尽量将小表数据先用广播变量导入内存,后面各个executor都可以直接使用 pa ...

  3. 使用Spark进行搜狗日志分析实例——列出搜索不同关键词超过10个的用户及其搜索的关键词

    package sogolog import org.apache.hadoop.io.{LongWritable, Text} import org.apache.hadoop.mapred.Tex ...

  4. Spark RDD/Core 编程 API入门系列之动手实战和调试Spark文件操作、动手实战操作搜狗日志文件、搜狗日志文件深入实战(二)

    1.动手实战和调试Spark文件操作 这里,我以指定executor-memory参数的方式,启动spark-shell. 启动hadoop集群 spark@SparkSingleNode:/usr/ ...

  5. 《图解Spark:核心技术与案例实战》介绍及书附资源

    本书中所使用到的测试数据.代码和安装包放在百度盘提供 下载 ,地址为https://pan.baidu.com/s/1o8ydtKA 密码:imaa 另外在百度盘提供本书附录  下载 ,地址为http ...

  6. 《图解Spark:核心技术与案例实战》作者经验谈

    1,看您有维护博客,还利用业余时间著书,在技术输出.自我提升以及本职工作的时间利用上您有没有什么心得和大家分享?(也可以包含一些您写书的小故事.)回答:在工作之余能够写博客.著书主要对技术的坚持和热爱 ...

  7. Spark Streaming 进阶与案例实战

    Spark Streaming 进阶与案例实战 1.带状态的算子: UpdateStateByKey 2.实战:计算到目前位置累积出现的单词个数写入到MySql中 1.create table CRE ...

  8. 日志检索实战 grep sed

    日志检索实战 grep sed 参考 sed命令 使用 grep -5 'parttern' inputfile //打印匹配行的前后5行 grep -C 5 'parttern' inputfile ...

  9. Spark SQL知识点大全与实战

    Spark SQL概述 1.什么是Spark SQL Spark SQL是Spark用于结构化数据(structured data)处理的Spark模块. 与基本的Spark RDD API不同,Sp ...

随机推荐

  1. Codeforces Round #380 (Div. 2)D. Sea Battle

    D. Sea Battle time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  2. IdentityServer4 SigningCredential(RSA 证书加密)

    IdentityServer4 默认提供了两种证书加密配置: services.AddIdentityServer() .AddDeveloperSigningCredential() .AddTem ...

  3. python3 字符串操作相关函数

    整理自python基础|菜鸟教程 感谢菜鸟教程提供的优质资源! 1.capitalize() 将字符串的第一个字符转换为大写 实例 以下实例展示了capitalize()方法的实例: #!/usr/b ...

  4. JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[2]--(创建你的那个对象吧)

    一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 ...

  5. WebService--jax-spring集成

    如果使用javax.jws内容编写webservice,则只能通过将程序打成jar包的形式运行,如果要想通过web容器进行发布,则需要使用其他webservice框架.下面介绍jaxws与spring ...

  6. php 文档操作

    ftp_mkdir() 函数在 FTP 服务器上建立新目录. 语法 ftp_mkdir(ftp_connection,dir) 参数 描述 ftp_connection 必需.规定要使用的 FTP 连 ...

  7. .Net 中通用的FormatString格式符整理

    格式化日期和数字的字符串经常要用到这个, 就把帮助里面的东西大概整理了一些列在这里了. 下表描述了用来格式化 DateTime 对象的标准格式说明符.格式说明符 名称 说明 d 短日期模式 显示由与当 ...

  8. IIFE(立即执行函数表达式)

    我们经常会看到这样的写法: ;(fuction () { // do something })() 这就是一个简单的IIFE(立即执行函数表达式,immediately-invoked functio ...

  9. 实战Excel Add-in的三种玩法

    作者:陈希章 发表于 2017年11月26日 前言 这个系列文章应该有一阵子没有更新了,原因是一如既往的多,但是根本所在是我对于某些章节其实还没有完全想好怎么写,尤其是对于Office Add-in这 ...

  10. Vue-cli创建项目从单页面到多页面2-history模式

    之前讲过怎样将vue-cli创建的项目改造成多页面(vue-cli创建项目从单页面到多页面),今天说一下怎样在多页面的前提下使用history模式. 如何使用history模式 因为vue默认的has ...