[Spark Streaming] 读取 Kafka 消息, 插入到 MySQL

以下是一个简单的使用 Spark Streaming 读取 Kafka 消息、统计数据后插入到 MySQL 中的 Scala 代码示例:

scala 复制代码
import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Seconds, StreamingContext}
import org.apache.spark.streaming.kafka.KafkaUtils
import java.sql.DriverManager

object KafkaToMysql {

  def main(args: Array[String]): Unit = {
    // 创建 SparkConf
    val conf = new SparkConf().setAppName("KafkaToMysql")
    // 创建 StreamingContext
    val ssc = new StreamingContext(conf, Seconds(5))

    // 设置 Kafka 相关参数
    val kafkaParams = Map[String, String](
      "bootstrap.servers" -> "your_kafka_broker:9092",
      "group.id" -> "your_group_id"
    )

    // 定义要读取的 Kafka 主题
    val topics = Array("your_topic")

    // 使用 KafkaUtils 创建 DStream
    val kafkaStream = KafkaUtils.createDirectStream[String, String](
      ssc,
      LocationStrategies.PreferConsistent,
      ConsumerStrategies.Subscribe[String, String](topics, kafkaParams)
    )

    // 解析和统计数据
    val data = kafkaStream.map(_.value()).flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)

    // 定义数据库连接相关信息
    val url = "jdbc:mysql://your_host:your_port/your_database"
    val username = "your_username"
    val password = "your_password"

    // 将统计结果插入到 MySQL 中
    data.foreachRDD(rdd => {
      rdd.foreachPartition(partition => {
        Class.forName("com.mysql.jdbc.Driver")
        val connection = DriverManager.getConnection(url, username, password)
        val statement = connection.createStatement()
        partition.foreach { case (word, count) =>
          val sql = s"INSERT INTO your_table (word, count) VALUES ('$word', $count)"
          statement.executeUpdate(sql)
        }
        connection.close()
      })
    })

    ssc.start()
    ssc.awaitTermination()
  }
}
相关推荐
Ren_xixi10 分钟前
redis和mysql的区别
数据库·redis·mysql
lucky_syq11 分钟前
Flume和Kafka的区别?
大数据·kafka·flume
观测云12 分钟前
Confluent Cloud Kafka 可观测性最佳实践
kafka·confluent
攻心的子乐12 分钟前
Kafka可视化工具 Offset Explorer (以前叫Kafka Tool)
分布式·kafka
追逐时光者2 小时前
免费、简单、直观的数据库设计工具和 SQL 生成器
后端·mysql
drebander2 小时前
MySQL 查询优化案例分享
数据库·mysql
漫无目的行走的月亮4 小时前
Ubuntu下C语言操作kafka示例
kafka·librdkafka
小林coding4 小时前
阿里云 Java 后端一面,什么难度?
java·后端·mysql·spring·阿里云
18号房客5 小时前
高级sql技巧进阶教程
大数据·数据库·数据仓库·sql·mysql·时序数据库·数据库架构
yukai080086 小时前
【最后203篇系列】002 - 两个小坑(容器时间错误和kafka模块报错
分布式·kafka