Spark 中怎么读取本地日志文件
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章给大家介绍Spark 中怎么读取本地日志文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.代码如下import java.io.{FileWriter, Buffer
千家信息网最后更新 2025年12月02日Spark 中怎么读取本地日志文件
这篇文章给大家介绍Spark 中怎么读取本地日志文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
1.代码如下
import java.io.{FileWriter, BufferedWriter, File}import com.alvinalexander.accesslogparser.{AccessLogRecord, AccessLogParser}import org.apache.spark.{SparkContext, SparkConf}import scala.collection.immutable.ListMap/** * Spark 读取本地日志文件,抽取最高的访问地址,排序,并保存到本地文件 * Created by eric on 16/6/29. */object LogAnalysisSparkFile { def getStatusCode(line: Option[AccessLogRecord]) = { line match { case Some(l) => l.httpStatusCode case None => "0" } } def main(agrs: Array[String]): Unit = { //设置本地运行,在Vm options:上填写:-Dspark.master=local ,Program arguments上填写:local val sparkConf = new SparkConf().setMaster("local[1]").setAppName("StreamingTest") val sc = new SparkContext(sparkConf) val p = new AccessLogParser val log = sc.textFile("/var/log/nginx/www.eric.aysaas.com-access.log") println(log.count())//68591 val log1 = log.filter(line => getStatusCode(p.parseRecord(line)) == "404").count() println(log1) val nullObject = AccessLogRecord("", "", "", "", "GET /foo HTTP/1.1", "", "", "", "") val recs = log.filter(p.parseRecord(_).getOrElse(nullObject).httpStatusCode == "404") .map(p.parseRecord(_).getOrElse(nullObject).request) val wordCounts = log.flatMap(line => line.split(" ")) .map(word => (word, 1)) .reduceByKey((a, b) => a + b) val uriCounts = log.map(p.parseRecord(_).getOrElse(nullObject).request) .map(_.split(" ")(1)) .map(uri => (uri, 1)) .reduceByKey((a, b) => a + b) val uriToCount = uriCounts.collect // (/foo, 3), (/bar, 10), (/baz, 1) ...//无序 val uriHitCount = ListMap(uriToCount.toSeq.sortWith(_._2 > _._2):_*) // (/bar, 10), (/foo, 3), (/baz, 1),降序 uriCounts.take(10).foreach(println) println("**************************") val logSave = uriHitCount.take(10).foreach(println) // this is a decent way to print some sample data uriCounts.takeSample(false, 100, 1000) //输出保存到本地文件,由于ListMap,导致 saveAsTextFile 不能用 // logSave.saveAsTextFile("UriHitCount") val file = new File("UriHitCount.out") val bw = new BufferedWriter(new FileWriter(file)) for { record <- uriHitCount val uri = record._1 val count = record._2 } bw.write(s"$count => $uri\n") bw.close }}2.结果图如下
关于Spark 中怎么读取本地日志文件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
文件
日志
内容
更多
帮助
不错
最高
代码
兴趣
地址
小伙
小伙伴
文章
知识
篇文章
结果
参考
抽取
排序
输出
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
西安软件开发哪家靠谱
全国网络安全宣传视频
数控宏程序软件开发
怎样更新wpsapi数据库
我的世界服务器怎么设置私聊
局域网文档办公服务器
衡阳软件开发培训哪里好
烟雨江湖可以转到哪个服务器
网络安全法的方针是什么
sql怎么共享数据库
java连接sql数据库
数据库计算求值
昌平区专业性网络技术推广优点
重庆铜梁配送生鲜软件开发
双路服务器主板amd
天猫商城数据库类型
济南财务软件开发工程师
联想服务器惠眼管理
十堰iptv服务器费用
oracle数据库由实例
北京企腾网络技术
1.介绍市面上主流的云服务器并比较
意识形式网络安全培训
西安交通大学网络安全
腾讯云服务器挂机教程-简书
打游戏服务器链接超时
2华为网络技术大赛
闵行区网络软件开发代理品牌
服装店效果图软件开发
网络技术基础瑜伽