首先需要安装好Java和Scala,然后下载火花安装,确保路径和JAVA_HOME已经设置,然后需要使用Scala的SBT构建火花如下:
sbt美元/sbt大会
构建时间比较长。构建完成后,通过运行下面命令确证安装成功:
美元/bin/spark-shell >之前scala>val文本文件=sc.textFile (README.md)//创建一个指向README。md引用 scala>文本文件。//计数对这个文件内容行数进行计数 scala>文本文件。第一//打印出第一行 >之前
首先我们需要使用Scala编写一个对Apache访问日志的分析器,所幸已经有人编写完成,下载Apache日志文件解析器代码。使用SBT进行编译打包:
sbt编译 sbt测试 sbt包 >之前打包名称假设为AlsApacheLogParser。jar。
然后在Linux命令行启动火花:
//这是 $主=当地[4]SPARK_CLASSPATH=AlsApacheLogParser。jar/bin/spark-shell >之前 0.9对于火花,有些方式并不起效:
//不工作 $主=当地[4]ADD_JARS=AlsApacheLogParser。jar/bin/spark-shell//不工作 spark>:cp AlsApacheLogParser.jar >之前上传成功后,在火花REPL创建AccessLogParser实例:
进口com.alvinalexander.accesslogparser._ 新AccessLogParser val p=>之前现在就可以像之前读取readme.cmd一样读取apache访问日志accesslog。小:
scala>val日志=sc.textFile (“accesslog.small”) 14/03/09 11:25:23信息MemoryStore: ensureFreeSpace curMem=0(32856)称,maxMem=309225062 14/03/09 11:25:23信息MemoryStore: broadcast_0作为值存储内存块(约32.1 KB大小,免费294.9 MB) 日志:org.apache.spark.rdd。抽样[String]=MappedRDD[1]在文本文件& lt; console>: 15 scala>log.count (大量的输出) res0:长=100000 >之前
我们可以分析Apache日志中404有多少个,创建方法如下:
def getStatusCode(线:选择[AccessLogRecord])={ {是否相符 一些(l)=比;l.httpStatusCode 情况下没有=比;“0” } } >之前其中选择[AccessLogRecord]是分析器的返回值。
然后在火花命令行使用如下:
日志。过滤器(行=比;getStatusCode (p.parseRecord(线)).count==" 404 ") >之前这个统计将返回httpStatusCode是404的行数。
下面如果我们想知道哪些URL是有问题的,比如URL中有一个空格等导致404错误,显然需要下面步骤:
<李>过滤出所有404记录李> <李>从每404个记录得到请求字段(分析器请求的URL字符串是否有空格等)李> <李>不要返回重复的记录李>
创建下面方法:
//得到“请求”字段的访问日志记录 def getRequest (rawAccessLogString: String):选择[String]={ val accessLogRecordOption=p.parseRecord (rawAccessLogString) {accessLogRecordOption匹配 一些(rec)=比;一些(rec.request) 情况下没有=比;没有一个 } } >之前将这些代码贴入火花REPL,再运行如下代码:
日志。过滤器(行=比;getStatusCode (p.parseRecord(线))==" 404 "). map (getRequest (_)) .count val recs=日志。过滤器(行=比;getStatusCode (p.parseRecord(线))==" 404 "). map (getRequest (_)) val distinctRecs=日志。过滤器(行=比;getStatusCode (p.parseRecord(线))==" 404 "). map (getRequest (_)) .distinct distinctRecs.foreach println () >之前
对于访问日志简单分析当然是要grep比较好,但是更复杂的查询就需要引发了。很难判断火花在单个系统上的性能。这是因为火花是针对分布式系统大文件。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
详解如何使用火花和Scala分析Apache访问日志