spark3.0教程-SparkSQL:连接MySQL,写入数据

说明

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()
  }
}

原文出处:/show_1IX4KLWwYS4o.html