如何进行spark在日志分析系统里的简单应用
云計(jì)算
如何進(jìn)行spark在日志分析系統(tǒng)里的簡(jiǎn)單應(yīng)用 ,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。
1.下載spark和運(yùn)行
wgethttp://apache.fayea.com/apache-mirror/spark/spark-1.0.0/spark-1.0.0-bin-hadoop2.tgz
我這里下載的是1.0.0版,由于我們只是測(cè)試spark的用法所以不需要配置spark集群,只需把下好的文件解壓,進(jìn)入bin/文件夾。
spark支持scala,java和python。
scala和java輸入命令:./spark-shell python 輸入命令 ./pyspark 進(jìn)入控制臺(tái),我們以python為例:
很簡(jiǎn)單無需任何配置,好的開始是成功的一半,我們繼續(xù)。
2.簡(jiǎn)單應(yīng)用
讀取文本文件,我們還是以之前的日志文件為例:
>>>file = sc.textFile("/home/hadoop/20130207.txt")
PS:python是大小寫敏感的;路徑要給全,否則默認(rèn)是你運(yùn)行命令時(shí)的那個(gè)路徑;python2.7.X版本對(duì)編碼支持一直是個(gè)問題,請(qǐng)盡量統(tǒng)一源文件的編碼,如"utf-8".
顯示總行數(shù):
>>> file.count()
265063
顯示第一行內(nèi)容:
>>>file.first()
得到所有被ie8訪問的url的計(jì)數(shù):
>>>file.filter(lambda line : "MSIE 8.0" in line).count()
98670
Ps: lambda 是匿名函數(shù)的寫法;filter默認(rèn)輸入的是整行,上述代碼的意思遍歷每一行并計(jì)算出包含“MSIE 8.0”字符串的行數(shù)和。
得到擁有最多字段數(shù)的那行的字段個(gè)數(shù):
>>> file.map(lambda line : len(line.split("|"))).reduce(lambda a,b: a if a>b else b )
Ps:map(lambda line : len(line.split("|")))是把每行分割成集合并返回集合的成員數(shù);
python中的reduce內(nèi)建函數(shù)是一個(gè)二元操作函數(shù),他用來將一個(gè)數(shù)據(jù)集合(鏈表,元組等)中的所有數(shù)據(jù)進(jìn)行下列操作:用傳給reduce中的函數(shù) func()(必須是一個(gè)二元操作函數(shù))先對(duì)集合中的第1,2個(gè)數(shù)據(jù)進(jìn)行操作,得到的結(jié)果再與第三個(gè)數(shù)據(jù)用func()函數(shù)運(yùn)算,最后得到一個(gè)結(jié)果。
統(tǒng)計(jì)每個(gè)字符串(字段內(nèi)容)出現(xiàn)的次數(shù):
file.flatMap(lambda line :line.split("|")).map(lambda word:(word,1)).reduceByKey(lambda a,b:a+b).collect()
結(jié)果顯示的數(shù)據(jù)太多了,精神崩潰~~,換個(gè)方式~
統(tǒng)計(jì)每個(gè)字符串(字段內(nèi)容)出現(xiàn)的次數(shù),并顯示出現(xiàn)最多個(gè)10個(gè)字符串:
>>>file.flatMap(lambda line :line.split("|")).map(lambda word:(word,1)).reduceByKey(lambda a,b:a+b).map(lambda (k,v):(v,k)).sortByKey().top(10)
sortByKey是根據(jù)鍵值排序,top是提取前X個(gè)記錄,跟hive中的limit 類似。由于spark中沒有sortByValue方法,所以在排序前先把key和value互換。
關(guān)于如何進(jìn)行spark在日志分析系統(tǒng)里的簡(jiǎn)單應(yīng)用 問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注箭頭云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
總結(jié)
以上是生活随笔為你收集整理的如何进行spark在日志分析系统里的简单应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么登入路由器 如何进入路由器地址
- 下一篇: 域名cn和com哪一个好 com与cn的