[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()
  }
}
相关推荐
Dxy12393102164 分钟前
MySQL索引完整教程:创建、查看、修改、删除与日常管理
前端·javascript·mysql
至乐活着3 小时前
MySQL索引底层原理与查询优化实战:从B+树到执行计划
mysql·b+树·查询优化·sql性能·索引原理
万亿少女的梦1688 小时前
基于SpringBoot的考研学习交流系统设计与开发
spring boot·mysql·vue·系统设计·论坛系统
杨云龙UP8 小时前
MySQL基于XtraBackup物理备份搭建GTID主从复制操作手册
数据库·mysql·xtrabackup·主从复制·备份恢复·还原备份文件
我会尽全力 乐观而坚强9 小时前
MySQL库与表的操作
linux·数据库·mysql
lilihuigz9 小时前
产品附加选项插件WooCommerce Product Add-Ons:9种字段类型与3种定价模式提升销售 - 易服客工作室
数据库·mysql·wordpress插件·woocommerce扩展·定制选项
SelectDB11 小时前
快手 AB 场景提速 145 倍,从 Spark 到 Apache Doris 的加速实践
数据库·spark·开源
要开心吖ZSH12 小时前
处方物流信息同步优化:从 36 秒到亚秒级的踩坑记录
java·数据库·mysql·性能优化
Sylvia-girl12 小时前
第五站:MySQL常用典型数据类型
数据库·mysql
KaMeidebaby13 小时前
卡梅德生物技术快报|实操手册:CXCL4 蛋白原核表达全套工艺,两步层析去除蛋白多聚体附完整电泳数据
人工智能·算法·机器学习·架构·spark