文档章节

打造基于hadoop的网站日志分析系统(5)之spark在日志分析系统里的简单应用

豚鼠窝窝
 豚鼠窝窝
发布于 2014/07/10 09:37
字数 758
阅读 3648
收藏 10

1.下载spark和运行

wget http://apache.fayea.com/apache-mirror/spark/spark-1.0.0/spark-1.0.0-bin-hadoop2.tgz

这里下载的是1.0.0版,由于我们只是测试spark的用法所以不需要配置spark集群,只需把下好的文件解压,进入bin/文件夹。

spark支持scala,java和python。

scala和java输入命令:./spark-shell python 输入命令 ./pyspark 进入控制台,我们以python为例:


很简单无需任何配置,好的开始是成功的一半,我们继续。


2.简单应用

读取文本文件,我们还是以之前的日志文件为例:

>>>file = sc.textFile("/home/hadoop/20130207.txt") 

PS:python是大小写敏感的;路径要给全,否则默认是你运行命令时的那个路径;python2.7.X版本对编码支持一直是个问题,请尽量统一源文件的编码,如"utf-8".

显示总行数:

>>> file.count()

265063

显示第一行内容:

>>>file.first()

得到所有被ie8访问的url的计数

>>>file.filter(lambda line : "MSIE 8.0" in line).count()

98670

Ps: lambda 是匿名函数的写法;filter默认输入的是整行,上述代码的意思遍历每一行并计算出包含“MSIE 8.0”字符串的行数和。


得到拥有最多字段数的那行的字段个数:

>>> file.map(lambda line : len(line.split("|"))).reduce(lambda a,b: a if a>b else b )

Ps:map(lambda line : len(line.split("|")))是把每行分割成集合并返回集合的成员数;

 python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。


统计每个字符串(字段内容出现的次数:

 file.flatMap(lambda line :line.split("|")).map(lambda word:(word,1)).reduceByKey(lambda a,b:a+b).collect()

结果显示的数据太多了,精神崩溃~~,换个方式~

统计每个字符串(字段内容出现的次数,并显示出现最多个10个字符串

 >>>file.flatMap(lambda line :line.split("|")).map(lambda word:(word,1)).reduceByKey(lambda a,b:a+b).map(lambda (k,v):(v,k)).sortByKey().top(10)

sortByKey是根据键值排序,top是提取前X个记录,跟hive中的limit 类似。由于spark中没有sortByValue方法,所以在排序前先把key和value互换。


© 著作权归作者所有

豚鼠窝窝
粉丝 5
博文 7
码字总数 5889
作品 0
虹口
架构师
私信 提问
从Hadoop到Spark的架构实践

当下,Spark已经在国内得到了广泛的认可和支持:2014年,Spark Summit China在北京召开,场面火爆;同年,Spark Meetup在北京、上海、深圳和杭州四个城市举办,其中仅北京就成功举办了5次,内...

Emilypz
2015/10/10
1K
0
大数据经典学习路线(及供参考)之 三

3.Storm实时计算部分阶段 实时课程分为两个部分:流式计算核心技术和流式计算计算案例实战。 1.流式计算核心技术 流式计算核心技术主要分为两个核心技术点:Storm和Kafka,学完此阶段能够掌握...

柯西带你学编程
2018/05/22
0
0
上海大数据实战开发转型—程序员未来的筹码

活动将长期(每周六)举行,报名后我们会第一时间与您联系 活动流程 13:30 签到 14:00 老师分享 16:00 互动交流 16:30 活动结束 (Hadoop) (含项目实战) NoSQL专题(含HBase) Hadoop企业项...

简直是天才
2018/05/15
20
0
大数据经典学习路线(及供参考)

转:https://blog.csdn.net/yuexianchang/article/details/52468291 目录(?)[+]

junzixing1985
2018/04/15
0
0
上海大数据实战开发转型—程序员未来的筹码

活动将长期(每周六)举行,报名后我们会第一时间与您联系 活动流程 13:30 签到 14:00 老师分享 16:00 互动交流 16:30 活动结束 (Hadoop) (含项目实战) NoSQL专题(含HBase) Hadoop企业项...

简直是天才
2018/05/15
84
0

没有更多内容

加载失败,请刷新页面

加载更多

RxJava进行单元测试的方式

@Test public void completeTask_retrievedTaskIsComplete() { // Given a new task in the persistent repository final Task newTask = new Task(TITLE, ""); ......

SuShine
44分钟前
5
0
正则表达式大全

检验手机号码 # 要求:手机号码必须为11位数字,以1开头,第二位为1或5或8。import redef verify_mobile(): mob = input("请输入手机号码:") ret = re.match(r"1[358]\d{9}", m......

彩色泡泡糖
48分钟前
7
0
QT之border-image属性

一、border-image的兼容性 border-image可以说是CSS3中的一员大将,将来一定会大放光彩,其应用潜力真的是非常的惊人。可惜目前支持的浏览器有限,仅Firefox3.5,chrome浏览器,Safari3+支持...

shzwork
48分钟前
6
0
Kubernetes Operator简易教程

1. 安装operator-sdk //安装 operator-sdk$ apt-get install operator-sdk.....$ operator-sdk versionoperator-sdk version: v0.7.0$ go versiongo version go1.11.4 darwin/amd64 2......

Robotcl_Blog
48分钟前
5
0
再谈DAG任务分解和Shuffle RDD

1、DagScheduler分析 DagScheduler功能主要是负责RDD的各个stage的分解和任务提交。Stage分解是从触发任务调度过程的finalStage开始倒推寻找父stage,如果父stage没有提交任务则循环提交缺失...

守望者之父
54分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部