spark 根据关键字查询日志信息(关键字下行10行)

本文介绍了如何配置和使用Spark在测试环境中处理日志查询。通过调整`spark-defaults.conf`设置executor内存为512m,然后在`spark-env.sh`中设置环境。创建`submit-yarn.sh`脚本来提交作业,使用`sparklog.jar`处理从`hdfs://SparkMaster:9000/data`读取的数据,查找关键字`chensy`,并将结果写入`hdfs://SparkMaster:9000/mylog`。执行脚本后,可以通过`hadoop fs -ls /mylog`查看查询结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

业务需要根据关键字查询HDFS日志信息,并且需要查看关键字Key之下10行

package com.spark.scala
import org.apache.spark.{SparkContext,SparkConf}

class mylog{

}

object mylog{
        def main(args: Array[String]) {
            //没有数据源,退出
            if(args(0) == 0){
                System.err.println("Usage:  mylog <file>")
                System.exit(1)
            }
            val conf = new SparkConf().setAppName("mylog")
            val sc = new SparkContext(conf)
            //加载数据、为每行数据添加索引并调换索引与Value值位置
            val f = sc.textFile(args(0)).zipWithIndex.map{
                    case(x,y)=>(y,x)}
            //过滤每行数据是否包含关键字
            val lf = f.filter(line=>line._2.toString
                        .contains(args(1)))
            //取得包含关键字数据所在行的索引号
            val num = lf.map(x=>x._1.toInt)
            //定义查询数据的起止索引
            val startNum = num.first + 0
            val endNum = num.first + 10
            //按起止索引过滤数据,并设置结果只为Value值数据
            val s = f.filter(startNum <= _._1).filter(
                    _._1 <= endNum).map(x=>x._2)
            //重设分区以便保存数据到HDFS上为单文件(结果数据较少)
            s.repartition(1).saveAsTextFile(args(2))
            System.exit(0)
    }
}

spark-defaults.conf
测试环境虚拟机内存比较小,设置spark.executor.memory为512m

spark.master   yarn-client
spark.executor.memory  512m
spark.local.dir  /usr/local/spark/data/tmp_spark_dir

spark-env.sh
这里写图片描述

建一个脚本submit-yarn.sh执行提交作业工作
cd home
vim submit-yarn.sh

cd  /usr/local/spark/spark-1.2.0-bin-hadoop2.4/

./bin/spark-submit  --name sparklog \
                    --class com.spark.scala.mylog \
                    /home/sparklog.jar \
                    hdfs://SparkMaster:9000/data \
                    chensy \
                    hdfs://SparkMaster:9000/mylog

/home/sparklog.jar 对应的是idea打包后为sparklog.jar,并存放在/home
hdfs://SparkMaster:9000/data 对应代码args(0),输入数据
chensy 对应代码args(1),是查询关键字
hdfs://SparkMaster:9000/mylog 对应代码args(2),输出数据

直接在home目录下,执行 ./submit-yarn.sh
查询结果: hadoop fs -ls /mylog

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

撸依天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值