Spark 2.x管理与开发-Spark SQL-【在IDEA中开发Spark SQL程序】(三)将数据保存到数据库 

测试数据:

 

Scala代码:

package sqlExamples
/**
 * 将数据存到MySQL-JDBC
 */
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types.StructField
import org.apache.spark.sql.types.StringType
import org.apache.spark.sql.types.IntegerType
import org.apache.spark.sql.types.StructType
import org.apache.spark.sql.Row
import java.util.Properties

object DataToMySQl {
  def main(args: Array[String]): Unit = {
    //1.首先,使用SparkSession来创建Spark的运行环境
    val spark = SparkSession.builder().master("local").appName("UnderstandSparkSession").getOrCreate()
    //2.从指定地址创建RDD
    val personRDD = spark.sparkContext.textFile("D:/student.txt").map(_.split("\t"))
    //3.通过StructType声明Schema
    val schema = StructType(
      List(
        StructField("sno", IntegerType),
        StructField("sname", StringType),
        StructField("sage", IntegerType)))
    //4.将RDD映射到rowRDD
    val rowRDD = personRDD.map(p => Row(p(0).toInt, p(1), p(2).toInt))
    //5.生成DataFrame
    val personDF=spark.createDataFrame(rowRDD, schema)
    //6.注册视图
    personDF.createOrReplaceTempView("person")
    //7.执行的SQL语句
    val df=spark.sql("select * from person")
    //8.将结果保存到MySQL中
      //1)新建一个Properties
    val props=new Properties()
      //2)设置
    props.setProperty("user","root")
    props.setProperty("password","123456")
    props.setProperty("driver","com.mysql.jdbc.Driver")
      //3)写到JDBC中-以追加的方式写入
    df.write.mode("append").jdbc("jdbc:mysql://localhost:3306/xinrong?serverTimezone=UTC&characterEncoding=UTF-8&useSSL=false", "student2", props)
    //9.关闭Spark
    spark.close()
  }
}

结果:

原始的表格数据:

 

添加操作之后的数据:

 

如果是以覆盖的方式写入:

//3)写到JDBC中-以覆盖的方式

    df.write.mode("overwrite").jdbc("jdbc:mysql://localhost:3306/xinrong?serverTimezone=UTC&characterEncoding=UTF-8&useSSL=false", "student", props)

结果:

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3