Spark-再次分析Apache访问日志
2016-05-15 01:11
651 查看
分析日志的包
自己编译下:sbt compile sbt test sbt package ApacheLogParser.jar
对于访问日志简单分析grep等利器比较好,但是更复杂的查询就需要Spark了。
代码:
import com.alvinalexander.accesslogparser._ val p = new AccessLogParser val log = sc.textFile("log.small") //log.count //分析Apache日志中404有多少个 def getStatusCode(line: Option[AccessLogRecord]) = { line match { case Some(l) => l.httpStatusCode case None => "0" } } log.filter(line => getStatusCode(p.parseRecord(line)) == "404").count /*想知道哪些URL是有问题的,比如URL中有一个空格等导致404错误,显**然需要下面步骤: *过滤出所有 404 记录 *从每个404记录得到request字段(分析器请求的URL字符串是否有空格***等)不要返回重复的记录 */ // get the `request` field from an access log record def getRequest(rawAccessLogString: String): Option[String] = { val accessLogRecordOption = p.parseRecord(rawAccessLogString) accessLogRecordOption match { case Some(rec) => Some(rec.request) case None => None } } log.filter(line => getStatusCode(p.parseRecord(line)) == "404").map(getRequest(_)).count val recs = log.filter(line => getStatusCode(p.parseRecord(line)) == "404").map(getRequest(_)) val distinctRecs = log.filter(line => getStatusCode(p.parseRecord(line)) == "404").map(getRequest(_)).distinct distinctRecs.foreach(println)
OK了!简单的例子!主要使用了分析日志的包!地址是:https://github.com/jinhang/ScalaApacheAccessLogParser
下次谢谢如何基于lamda架构来分析日志,kafka和spark streaming进行实时分析,hadoop和spark sql进行离线分析,mysql做分析结果的持久化,Flask可视化Web UI显示出来。睡了!
相关文章推荐
- Spark RDD API详解(一) Map和Reduce
- 使用spark和spark mllib进行股票预测
- Spark随谈——开发指南(译)
- Apache Isis 1.4.0 发布,领域驱动开发框架
- Spark,一种快速数据分析替代方案
- RH436 Day3 课后总结
- Linux快速构建apache web服务器
- Awstats处理多apache日志
- 安装perl模块小窍门
- Apache静态编译与动态编译的区别
- PHP+Apache在Windows 9x下的安装和配置
- Apache服务器配置全攻略
- Apache Web让JSP“动”起来
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- apache 环境下 php 的配置注意事项
- 在RedHat下安装apache jserv 1.1.2方法
- windows8.1下Apache+Php+MySQL配置步骤
- windows中PHP5.2.14以及apache2.2.16安装配置方法第1/2页
- 在Windows XP下安装Apache+MySQL+PHP环境