[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()
  }
}
相关推荐
戮戮8 分钟前
从 Spring @Retryable 到 Kafka 原生重试:消息重试方案的演进与最佳实践
spring·kafka·linq
云和数据.ChenGuang1 小时前
r=re.search(r‘data-original=“(.*?)“‘, line)指令解析
数据库·mysql·r语言
Q***f6351 小时前
后端消息队列学习资源,RabbitMQ+Kafka
学习·kafka·rabbitmq
m***11902 小时前
MySQL官网驱动下载(jar包驱动和ODBC驱动)【详细教程】
数据库·mysql
debug骑士2 小时前
云原生边缘计算系统在工业物联网中的实时智能调度与优化策略研究
mysql
chxii3 小时前
第六章:MySQL DQL 表之间的关系 自连接 一对一、一对多、多对一、多对多
java·前端·mysql
Bohemian—Rhapsody3 小时前
kafka主题(topic)数据保留时间设置
分布式·kafka
IT教程资源C4 小时前
(N_144)基于微信小程序在线订餐系统
mysql·vue·uniapp·前后端分离·订餐小程序·springboot订餐
蟹至之5 小时前
增删查改基础(其三)—— 聚合函数、分组查询(group by与having)、内置函数
数据库·mysql·增删查改
LumenL1u5 小时前
CentOS 7/8/9 上安装 MySQL 8.0+ 完整指南
linux·mysql