Spark(StructuredStreaming)从Mysql读取数据写入Mysql表(自增ID)


import java.sql.{Connection, DriverManager}
import java.util.Properties

import org.apache.spark.sql.{DataFrame, DataFrameReader, SparkSession}
import org.apache.spark.{SparkConf, SparkContext}

class RWSpark {
  def main(args: Array[String]): Unit = {
    //构建Spark环境
    val spark = SparkSession.builder()
      .appName(this.getClass.getCanonicalName.stripPrefix("$"))
      .master("local[2]")
      .config("saprk.sql.shuffle.partitions", "2")
      .config("spark.testing.memory", "477000000")
      .getOrCreate()
    /** 读取mysql数据方法一 */
    var url:String="jdbc:mysql://node1:3306/test"
    val prop = new Properties()
    prop.setProperty("user","root")
    prop.setProperty("password","123456")
    val inputDF: DataFrame = spark.read
      .jdbc(url, "sparkOne", prop)
    /** 读取mysql数据方法二 */
    val reader: DataFrameReader = spark.read
      .format("jdbc").option("url", url)
      .option("driver", "com.mysql.jdbc.Driver")
      .option("user", "root")
      .option("password", "123456")
      .option("dbtable", "sparkOne")

    //写入Mysql id为自增id时
    inputDF.coalesce(1)
      .foreachPartition { iter =>
        Class.forName("com.mysql.cj.jdbc.Driver")
        var con: Connection = null
        var psmst=null
        con=DriverManager.getConnection(
          "jdbc:mysql://node1:3306/test?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true",
          "root",
          "123456"
        )
        con.prepareStatement(
          """
            					  |INSERT INTO test.sparkOne(id,name,age)
            					  | VALUES (null,?,?)
          					""".stripMargin)

      }

  }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值