spark:用Scala写离线日志分析并把结果存储到MySQL

4 篇文章 0 订阅

使用工具:IDEA

Scala版本:2.12.15

日志可以到这里下载:testlog7.log-spark文档类资源-CSDN下载

也可以用代码生成:Scala模拟日志生成_一个人的牛牛的博客-CSDN博客

一定要在数据库中建表!!!!!

import java.sql.{Connection, DriverManager, PreparedStatement}
import org.apache.spark.{SparkConf, SparkContext}

//MySQL表,www是表名
case class www(
              www: String,   //列名,数据格式String
              count: Int   //列名,数据格式Int
              )

object Www {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local").setAppName("Count")
    val sc = new SparkContext(conf);
    //导入日志数据
    val data = sc.textFile("F:Scala\\test\\bighomework\\testlog7.log")
    //数据处理
    val webcount = data.map{line=>
      val web = line.split("_")(5) //用“_”下划线分割,5是想要的数据的位置
      (web)}.map((_,1))  //map
      .reduceByKey(_+_)  //reduce累加
      .sortBy(_._2, false) //倒序排序
      .collect() //收集数据
      .take(5)  //输出前5
    //.foreach(println(_)) //没有写人MySQL的话用来输出

    sc.stop()
    println("yes")

    webcount.foreach(
      rdd=>{
        val url = "jdbc:mysql://192.168.17.140:3306/hive?useUnicode=true&characterEncoding=UTF-8"
        //192.168.17.140是我的主机IP地址,可以用localhost。hive是我的数据库名
        val user = "root" //MySQL用户名
        val password = "123456789" //MySQL密码
        Class.forName("com.mysql.jdbc.Driver").newInstance()
        var conn: Connection = DriverManager.getConnection(url,user,password)
        val sql = "insert into www(www,count) values(?,?)"
        //第一个www是表名,(www,count)是列名
        var stmt : PreparedStatement = conn.prepareStatement(sql)
        stmt.setString(1,rdd._1.toString)
        stmt.setString(2,rdd._2.toString)
        stmt.executeUpdate()
        conn.close()
        //输出结果
        println("yes I get it!!!!")
        webcount.foreach(println(_)) 
      }
    )


  }
}

谢谢!!!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值