Spark 中怎么读取本地日志文件
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家介绍Spark 中怎么读取本地日志文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.代码如下import java.io.{FileWriter, Buffer
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
没上市的科技互联网公司
智网互联网科技
左右互联网络科技
滨湖区互联网智能科技产品供应
成都玖崟互联网科技有限公司乐商圈怎么样
重庆威客帮互联网科技
中化能源互联网科技招聘
语蝶互联网科技有限公司
移动互联网科技公司
互联网科技产业特征
工业互联网展湾科技股份有限公司
华中科技大学互联网的牛人
滨湖区互联网智能科技产品有哪些
互联网公司高科技产品
云南省自由互联网科技有限公司
富国互联网金融科技混合基金
2021世界互联网领先科技成果发布
扫呗互联网科技有限公司
互联网科技大会大佬
六子台科技互联网展会
互联网科技股
科技制造互联网公司
高科技与互联网
互联网金融公司科技
金融科技和互联网金融
联恩商钥互联网科技有限公司
哈尔滨新华互联网科技
互联网科技与管理
济南小医互联网科技有限公司招聘
上海旺乐尼互联网科技有限公司