说明
SparkSQL 可以通过 JDBC 连接 MySQL 数据,写入数据
提示:如果表存在,默认会报错,可以设置保存模式,详见 链接
关键代码
// 设置用户名、密码
val properties = new Properties()
properties.setProperty("user","root")
properties.setProperty("password","root")
dataframe.write
.mode(SaveMode.Append) // 表存在,就追加数据
.jdbc("url","表名",properties)
案例
读取 json 文件,并将数据保存到 MySQL 中
json数据文件
详见 链接
MySQL
创建 spark 数据库:
CREATE DATABASE `spark` /*!40100 COLLATE 'utf8mb4_unicode_ci' */
pom.xml
添加下面依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
java
package read
import java.util.Properties
import org.apache.spark.SparkConf
import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession}
object Std_write_jdbc {
def main(args: Array[String]): Unit = {
val sc = new SparkConf().setMaster("local[*]").setAppName("std")
val spark = SparkSession.builder().config(sc).getOrCreate()
val df: DataFrame = spark.read.json("cdz.json") //加载 json文件
// df.printSchema()
//显示所有数据
// df.show()
val properties = new Properties()
properties.setProperty("user","root")
properties.setProperty("password","root")
df.write
.mode(SaveMode.Append) // 表存在,就追加数据
.jdbc("jdbc:mysql://localhost:3306/spark","cdz",properties)
spark.close()
}
}