SparkSQL自定义UDF函数实现对日志文件的修改

该博客介绍了如何使用Spark处理日志文件,通过自定义UDF函数删除每条信息中包围的冒号,然后展示清洗过程,使用SparkSQL进行查询,并将清洗后的数据保存为TXT格式。

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

日志文件数据格式:

这里我们发现每条信息都有“”冒号的包裹,不利于我们分析,所以我们要对其进行简单的清洗去除冒号

UDF函数是对数据进行一进一出的操作,所以自定义UDF函数来实现

代码:

object Test02 {

    def main(args: Array[String]): Unit = {

        // spark配置文件
        val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("test02")

        // sparkSQL的运行环境
        val spark: SparkSession = SparkSession.builder().config(sparkConf).getOrCreate()

        // 使用sparkSQL读取log文件,可以将它当做text文件读取
        val df: DataFrame = spark.read.text("datas/moodle.zhiyou100.access.log")

        // 查看spark内核对文件数据的解析,这里只是看做一个string字符串
        df.printSchema()

        // 自定义UDF函数,UDF函数实现的是一对一数据操作,所以这里可以定义实现去除日志中的“
        spark.udf.register("delet",(x:String) => x.replace("\"",""))

        // 必须创建临时表才能使用sparkSQL
        df.createOrReplaceTempView("log")

        // 使用sparksql进行查询数据
        val value: DataFrame = spark.sql("select delet(*) from log")

        // 这里指定查看5条,并且允许显示全部(默认TRUE会将较长的数据不显示完全)
        value.show(5,false)

        // 将修改后的数据导出保存
        value.write.text("out1")

        spark.close()
    }

}

结果:

 这里保存的格式就是TXT格式了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值