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日志相关推荐

  1. spark日志存储路径为mysql_利用Spark解析Tomcat日志,并将统计结果存入Mysql数据库...

    本文试图实现的需求场景为:以学习Spark知识点为目的,编写Scala利用Spark解析800M的tomcat日志文件,打印一段时间内ERROR级别记录的前10行,统计每分钟的日志记录数,并将统计结果 ...

  2. Spark项目实战:大数据实时流处理日志(非常详细)

    实战概览 一.实战内容 二.大数据实时流处理分析系统简介 1.需求 2.背景及架构 三.实战所用到的架构和涉及的知识 1.后端架构 2.前端框架 四.项目实战 1.后端开发实战 1.构建项目 2.引入 ...

  3. Spark Core项目实战(1) | 准备数据与计算Top10 热门品类(附完整项目代码及注释)

      大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

  4. 2021年大数据Spark(二十一):Spark Core案例-SogouQ日志分析

    目录 案例-SogouQ日志分析 业务需求 准备工作 HanLP 中文分词 样例类 SogouRecord 业务实现 ​​​​​​​搜索关键词统计 ​​​​​​​用户搜索点击统计 ​​​​​​​搜索时 ...

  5. .NET Core实战项目之CMS 第三章 入门篇-源码解析配置文件及依赖注入

    写在前面 上篇文章我给大家讲解了ASP.NET Core的概念及为什么使用它,接着带着你一步一步的配置了.NET Core的开发环境并创建了一个ASP.NET Core的mvc项目,同时又通过一个实战 ...

  6. Spark Core项目实战(3) | 页面单跳转化率统计

      大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

  7. spark原理解析和spark core

    spark原理解析 解析一:resilient distributed dataset (RDD) resilient distributed dataset (RDD):弹性分布式数据集,有容错机制 ...

  8. Spark入门实战系列--6.SparkSQL(上)--SparkSQL简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.SparkSQL的发展历程 1.1 Hive and Shark SparkSQL的前身 ...

  9. Spark数据分析实战:大型活动大规模人群的检测和疏散

    Spark数据分析实战:大型活动大规模人群的检测和疏散 2016-06-29 Hadoop技术博文 近日,风靡西雅图.旧金山的Datapalooza登陆上海(IBM Spark大赛启动 10万美元悬赏 ...

  10. spark项目实战:电商分析平台之项目概述

    spark项目实战:电商分析平台之项目概述 目录 项目概述 程序架构分析 需求解析 初始代码和完成代码存放在github上面 1. 项目概述 在访问电商网站时,我们的一些访问行为会产生相应的埋点日志( ...

最新文章

  1. 安装 Enthought Tool Suite 时遇到的问题
  2. windows 7 可以清除的文件
  3. CentOS7上配置ELK
  4. 洛谷P4609 [FJOI2016]建筑师 【第一类斯特林数】
  5. Web中的积累:外观模式 Facade
  6. 关于eclipse没有http jar的问题解释
  7. 蓝牙耳机芯片检测软件_安凯微推出TWS真无线蓝牙5.0耳机芯片
  8. 一个牛逼的coder是这样诞生的。
  9. FreeSWITCH折腾笔记3——数据库修改为postgresql
  10. 考试一个程序员,1f=0.1
  11. 《计算机网络 第七版》读后感
  12. 华为那些手机有鸿蒙系统,华为鸿蒙系统支持哪些手机 鸿蒙系统支持哪些手机型号...
  13. 常用Jquery插件整理大全
  14. Spring AOP中Introduction的使用
  15. Linux:crond任务调度之at定时任务
  16. 2、Class和Subclass
  17. mysql limt参数
  18. 菜鸡前端面试题整理日记
  19. Pandas 1.数据的读取和保存
  20. 【自媒体必备】AI文字转语音,支持多种人声选择,在线生成一键导出【电脑永久版】

热门文章

  1. 如何使用思维导图?思维导图绘制方法介绍
  2. 【Sentry使用】自定义transaction
  3. COJ 0359 xjr考考你数据结构(根号2)线段树区间增加
  4. 【传智播客郑州】Hibernate Serach 5.9全文检索快速入门
  5. 苹果AppStore应用商店生存之道以及市场攻略最全解析
  6. 千钧一发之际赢得暂缓令,苹果App Store要反败为胜了?
  7. 【SCI】【计算机视觉】【图像处理】一二三四区期刊推荐(自用版本)
  8. 豆瓣top250html源码,用23行代码爬取豆瓣音乐top250
  9. 推荐系统之隐语义模型(LFM)及Python实现
  10. usb无线网卡安装在服务器上,USB无线网卡怎么用?USB无线网卡如何安装?