spark2.x数据写入到数据库

df.repartition(1).write.mode(SaveMode.Overwrite)
        .format("jdbc")
        .option("driver", "com.mysql.jdbc.Driver")
        .option("url", "jdbc:mysql://127.0.0.1:3306/bcm?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false")
        .option("dbtable", "bcm_test.online_vehicles_test")
        .option("user", "bad")
        .option("password", "123456")
        .save()

注意的是

需要添加option("driver", "com.mysql.jdbc.Driver"),否则提示找不到合适的驱动

数据写入MySQL是常见的Spark Streaming数据处理过程之一。下面是一个简单的示例,演示如何将Spark Streaming处理后的数据写入MySQL数据库。 ```scala import java.sql.{Connection, DriverManager, PreparedStatement} // 定义一个函数,用于将数据写入MySQL def writeToMySQL(iter: Iterator[(String, Int)]): Unit = { var conn: Connection = null var ps: PreparedStatement = null val sql = "insert into wordcount(word, count) values (?, ?)" try { // 获取MySQL连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password") iter.foreach(data => { // 每个分区创建PreparedStatement对象 ps = conn.prepareStatement(sql) ps.setString(1, data._1) ps.setInt(2, data._2) ps.executeUpdate() }) } catch { case e: Exception => e.printStackTrace() } finally { // 关闭连接和PreparedStatement对象 if (ps != null) { ps.close() } if (conn != null) { conn.close() } } } // 创建StreamingContext对象 val ssc = new StreamingContext(sparkConf, Seconds(2)) // 创建DStream对象,从文本文件中读取数据 val lines = ssc.textFileStream("hdfs://localhost:9000/data") // 对DStream进行处理 val wordCounts = lines.flatMap(_.split(" ")).map(x => (x, 1)).reduceByKey(_ + _) // 将结果写入MySQL wordCounts.foreachRDD(rdd => { rdd.foreachPartition(iter => { // 每个分区的数据写入MySQL writeToMySQL(iter) }) }) // 启动StreamingContext ssc.start() ssc.awaitTermination() ``` 代码解释: 1. `writeToMySQL` 函数用于将数据写入MySQL。首先获取MySQL连接,然后遍历每个分区的数据,创建 `PreparedStatement` 对象并执行插入操作,最后关闭连接和 `PreparedStatement` 对象。 2. 创建 `StreamingContext` 对象,指定批处理时间间隔为 2 秒。 3. 创建 `DStream` 对象,从文本文件中读取数据。 4. 对 `DStream` 进行处理,使用 `flatMap` 和 `map` 函数将每行数据分割成单词并计数。 5. 将结果写入MySQL,使用 `foreachRDD` 函数遍历每个RDD,对每个分区的数据调用 `writeToMySQL` 函数进行写入。 6. 启动 `StreamingContext` 并等待处理完成。 希望这个示例能够帮助您了解如何将数据写入MySQL,以及Spark Streaming的基本用法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值