Spark 2.x管理与开发-Spark SQL-【在IDEA中开发Spark SQL程序】(三)将数据保存到数据库
Posted on 2020-07-28 19:35 MissRong 阅读(354) 评论(0) 收藏 举报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)
结果:

浙公网安备 33010602011771号