国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Apache > 正文

詳解如何使用Spark和Scala分析Apache訪問日志

2024-08-27 18:27:06
字體:
來源:轉載
供稿:網友

安裝

首先需要安裝好Java和Scala,然后下載Spark安裝,確保PATH 和JAVA_HOME 已經設置,然后需要使用Scala的SBT 構建Spark如下:

$ sbt/sbt assembly

構建時間比較長。構建完成后,通過運行下面命令確證安裝成功:

$ ./bin/spark-shell
scala> val textFile = sc.textFile("README.md") // 創建一個指向 README.md 引用scala> textFile.count // 對這個文件內容行數進行計數scala> textFile.first // 打印出第一行

Apache訪問日志分析器

首先我們需要使用Scala編寫一個對Apache訪問日志的分析器,所幸已經有人編寫完成,下載Apache logfile parser code。使用SBT進行編譯打包:

sbt compilesbt testsbt package

打包名稱假設為AlsApacheLogParser.jar。
然后在Linux命令行啟動Spark:

// this works$ MASTER=local[4] SPARK_CLASSPATH=AlsApacheLogParser.jar ./bin/spark-shell

對于Spark 0.9,有些方式并不起效:

// does not work$ MASTER=local[4] ADD_JARS=AlsApacheLogParser.jar ./bin/spark-shell// does not workspark> :cp AlsApacheLogParser.jar

上傳成功后,在Spark REPL創建AccessLogParser 實例:

import com.alvinalexander.accesslogparser._val p = new AccessLogParser

現在就可以像之前讀取readme.cmd一樣讀取apache訪問日志accesslog.small:

scala> val log = sc.textFile("accesslog.small")14/03/09 11:25:23 INFO MemoryStore: ensureFreeSpace(32856) called with curMem=0, maxMem=30922506214/03/09 11:25:23 INFO MemoryStore: Block broadcast_0 stored as values to memory (estimated size 32.1 KB, free 294.9 MB)log: org.apache.spark.rdd.RDD[String] = MappedRDD[1] at textFile at <console>:15scala> log.count(a lot of output here)res0: Long = 100000

分析Apache日志

我們可以分析Apache日志中404有多少個,創建方法如下:

def getStatusCode(line: Option[AccessLogRecord]) = { line match {  case Some(l) => l.httpStatusCode  case None => "0" }}

其中Option[AccessLogRecord]是分析器的返回值。

然后在Spark命令行使用如下:

log.filter(line => getStatusCode(p.parseRecord(line)) == "404").count

這個統計將返回httpStatusCode是404的行數。

深入挖掘

下面如果我們想知道哪些URL是有問題的,比如URL中有一個空格等導致404錯誤,顯然需要下面步驟:

    過濾出所有 404 記錄 從每個404記錄得到request字段(分析器請求的URL字符串是否有空格等) 不要返回重復的記錄

創建下面方法:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南乐县| 军事| 奉化市| 兴安县| 玛曲县| 石首市| 海伦市| 通道| 梓潼县| 临泉县| 吴旗县| 鲜城| 广丰县| 杭锦旗| 抚顺市| 榆树市| 曲麻莱县| 正宁县| 防城港市| 怀柔区| 遂平县| 平泉县| 临清市| 奎屯市| 奉贤区| 周宁县| 天峨县| 西安市| 灵寿县| 介休市| 方山县| 五常市| 武清区| 广元市| 胶州市| 土默特右旗| 乌审旗| 婺源县| 宜都市| 辽阳县| 滦平县|