Spark Core实战:解析Tomcat日志
1.Tomcat日志格式:
localhost_access_log.txt
192.168.88.1 - - [30/Jul/2017:12:53:43 +0800] "GET /MyDemoWeb/ HTTP/1.1" 200 259
192.168.88.1 - - [30/Jul/2017:12:53:43 +0800] "GET /MyDemoWeb/head.jsp HTTP/1.1" 200 713
192.168.88.1 - - [30/Jul/2017:12:53:43 +0800] "GET /MyDemoWeb/body.jsp HTTP/1.1" 200 240
192.168.88.1 - - [30/Jul/2017:12:54:37 +0800] "GET /MyDemoWeb/oracle.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:54:38 +0800] "GET /MyDemoWeb/hadoop.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:54:38 +0800] "GET /MyDemoWeb/java.jsp HTTP/1.1" 200 240
192.168.88.1 - - [30/Jul/2017:12:54:40 +0800] "GET /MyDemoWeb/oracle.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:54:40 +0800] "GET /MyDemoWeb/hadoop.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:54:41 +0800] "GET /MyDemoWeb/mysql.jsp HTTP/1.1" 200 241
192.168.88.1 - - [30/Jul/2017:12:54:41 +0800] "GET /MyDemoWeb/hadoop.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:54:42 +0800] "GET /MyDemoWeb/web.jsp HTTP/1.1" 200 239
192.168.88.1 - - [30/Jul/2017:12:54:42 +0800] "GET /MyDemoWeb/oracle.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:54:52 +0800] "GET /MyDemoWeb/oracle.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:54:52 +0800] "GET /MyDemoWeb/hadoop.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:54:53 +0800] "GET /MyDemoWeb/oracle.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:54:54 +0800] "GET /MyDemoWeb/mysql.jsp HTTP/1.1" 200 241
192.168.88.1 - - [30/Jul/2017:12:54:54 +0800] "GET /MyDemoWeb/hadoop.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:54:54 +0800] "GET /MyDemoWeb/hadoop.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:54:56 +0800] "GET /MyDemoWeb/web.jsp HTTP/1.1" 200 239
192.168.88.1 - - [30/Jul/2017:12:54:56 +0800] "GET /MyDemoWeb/java.jsp HTTP/1.1" 200 240
192.168.88.1 - - [30/Jul/2017:12:54:57 +0800] "GET /MyDemoWeb/oracle.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:54:57 +0800] "GET /MyDemoWeb/java.jsp HTTP/1.1" 200 240
192.168.88.1 - - [30/Jul/2017:12:54:58 +0800] "GET /MyDemoWeb/oracle.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:54:58 +0800] "GET /MyDemoWeb/hadoop.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:54:59 +0800] "GET /MyDemoWeb/oracle.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:54:59 +0800] "GET /MyDemoWeb/hadoop.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:55:00 +0800] "GET /MyDemoWeb/mysql.jsp HTTP/1.1" 200 241
192.168.88.1 - - [30/Jul/2017:12:55:00 +0800] "GET /MyDemoWeb/oracle.jsp HTTP/1.1" 200 242
192.168.88.1 - - [30/Jul/2017:12:55:02 +0800] "GET /MyDemoWeb/web.jsp HTTP/1.1" 200 239
192.168.88.1 - - [30/Jul/2017:12:55:02 +0800] "GET /MyDemoWeb/hadoop.jsp HTTP/1.1" 200 242
2.需求:
找到访问量最高的两个网页
3.分析:
- 第一步:对网页的访问量求和 和WordCount类似
- 第二步:排序,降序
4.编写代码:
(1)添加依赖:
pom.xml
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId><version>2.1.0</version></dependency>
(2)MyTomcatLogCount.scala
package day1208import org.apache.spark.SparkContext
import org.apache.spark.SparkConf/*** 解析Tomcat日志* 192.168.88.1 - - [30/Jul/2017:12:54:41 +0800] "GET /MyDemoWeb/hadoop.jsp HTTP/1.1" 200 242192.168.88.1 - - [30/Jul/2017:12:54:42 +0800] "GET /MyDemoWeb/web.jsp HTTP/1.1" 200 239需求:找到访问量最高的两个网页第一步:对网页的访问量求和 和WordCount类似第二步:排序,降序***/object MyTomcatLogCount {def main(args: Array[String]): Unit = {val conf = new SparkConf().setMaster("local").setAppName("My Tomcat Log Count")val sc = new SparkContext(conf)/*** 读入日志,解析,找到访问jsp网页* 192.168.88.1 - - [30/Jul/2017:12:54:42 +0800] "GET /MyDemoWeb/web.jsp HTTP/1.1" 200 239*/val rdd1 = sc.textFile("/users/macbook/TestInfo/localhost_access_log.txt").map(/*** 找到网页名字** 并计数** line 代表读进来的每一行数据*/line => {//解析字符串,找到jsp名字//得到两个双引号之间的东西val index1 = line.indexOf("\"")val index2 = line.lastIndexOf("\"")val line1 = line.substring(index1+1, index2) // GET /MyDemoWeb/web.jsp HTTP/1.1//得到两个空格之间的东西val index3 = line1.indexOf(" ")val index4 = line1.lastIndexOf(" ")val line2 = line1.substring(index3+1, index4) // /MyDemoWeb/web.jsp//得到jsp的名字val jspName = line2.substring(line2.lastIndexOf("/")+1)(jspName,1)})/*** 按照jsp的名字 进行聚合操作*/val rdd2 = rdd1.reduceByKey(_+_)//得到每个jsp的访问量//使用value排序val rdd3 = rdd2.sortBy(_._2,false)//取出访问量最高的两个网页rdd3.take(2).foreach(println)sc.stop()//销售 : 勇气输出岗//技术 : 头脑}}
5.运行结果:
Spark Core实战:解析Tomcat日志相关推荐
- spark日志存储路径为mysql_利用Spark解析Tomcat日志,并将统计结果存入Mysql数据库...
本文试图实现的需求场景为:以学习Spark知识点为目的,编写Scala利用Spark解析800M的tomcat日志文件,打印一段时间内ERROR级别记录的前10行,统计每分钟的日志记录数,并将统计结果 ...
- Spark项目实战:大数据实时流处理日志(非常详细)
实战概览 一.实战内容 二.大数据实时流处理分析系统简介 1.需求 2.背景及架构 三.实战所用到的架构和涉及的知识 1.后端架构 2.前端框架 四.项目实战 1.后端开发实战 1.构建项目 2.引入 ...
- Spark Core项目实战(1) | 准备数据与计算Top10 热门品类(附完整项目代码及注释)
大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...
- 2021年大数据Spark(二十一):Spark Core案例-SogouQ日志分析
目录 案例-SogouQ日志分析 业务需求 准备工作 HanLP 中文分词 样例类 SogouRecord 业务实现 搜索关键词统计 用户搜索点击统计 搜索时 ...
- .NET Core实战项目之CMS 第三章 入门篇-源码解析配置文件及依赖注入
写在前面 上篇文章我给大家讲解了ASP.NET Core的概念及为什么使用它,接着带着你一步一步的配置了.NET Core的开发环境并创建了一个ASP.NET Core的mvc项目,同时又通过一个实战 ...
- Spark Core项目实战(3) | 页面单跳转化率统计
大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...
- spark原理解析和spark core
spark原理解析 解析一:resilient distributed dataset (RDD) resilient distributed dataset (RDD):弹性分布式数据集,有容错机制 ...
- Spark入门实战系列--6.SparkSQL(上)--SparkSQL简介
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.SparkSQL的发展历程 1.1 Hive and Shark SparkSQL的前身 ...
- Spark数据分析实战:大型活动大规模人群的检测和疏散
Spark数据分析实战:大型活动大规模人群的检测和疏散 2016-06-29 Hadoop技术博文 近日,风靡西雅图.旧金山的Datapalooza登陆上海(IBM Spark大赛启动 10万美元悬赏 ...
- spark项目实战:电商分析平台之项目概述
spark项目实战:电商分析平台之项目概述 目录 项目概述 程序架构分析 需求解析 初始代码和完成代码存放在github上面 1. 项目概述 在访问电商网站时,我们的一些访问行为会产生相应的埋点日志( ...
最新文章
- 安装 Enthought Tool Suite 时遇到的问题
- windows 7 可以清除的文件
- CentOS7上配置ELK
- 洛谷P4609 [FJOI2016]建筑师 【第一类斯特林数】
- Web中的积累:外观模式 Facade
- 关于eclipse没有http jar的问题解释
- 蓝牙耳机芯片检测软件_安凯微推出TWS真无线蓝牙5.0耳机芯片
- 一个牛逼的coder是这样诞生的。
- FreeSWITCH折腾笔记3——数据库修改为postgresql
- 考试一个程序员,1f=0.1
- 《计算机网络 第七版》读后感
- 华为那些手机有鸿蒙系统,华为鸿蒙系统支持哪些手机 鸿蒙系统支持哪些手机型号...
- 常用Jquery插件整理大全
- Spring AOP中Introduction的使用
- Linux:crond任务调度之at定时任务
- 2、Class和Subclass
- mysql limt参数
- 菜鸡前端面试题整理日记
- Pandas 1.数据的读取和保存
- 【自媒体必备】AI文字转语音,支持多种人声选择,在线生成一键导出【电脑永久版】
热门文章
- 如何使用思维导图?思维导图绘制方法介绍
- 【Sentry使用】自定义transaction
- COJ 0359 xjr考考你数据结构(根号2)线段树区间增加
- 【传智播客郑州】Hibernate Serach 5.9全文检索快速入门
- 苹果AppStore应用商店生存之道以及市场攻略最全解析
- 千钧一发之际赢得暂缓令,苹果App Store要反败为胜了?
- 【SCI】【计算机视觉】【图像处理】一二三四区期刊推荐(自用版本)
- 豆瓣top250html源码,用23行代码爬取豆瓣音乐top250
- 推荐系统之隐语义模型(LFM)及Python实现
- usb无线网卡安装在服务器上,USB无线网卡怎么用?USB无线网卡如何安装?