json数据准备

  1. [{"name":"zhangsan" ,"age":18} ,{"name":"lisi" ,"age":15}]

pom. xml

如果是聚合工程的话,建议这个依赖放在父工程上,如果放在子工程的话会出现问题.

  1. <dependency>
  2. <groupId>mysql</groupId>
  3. <artifactId>mysql-connector-java</artifactId>
  4. <version>5.1.49</version>
  5. </dependency>

代码

在写的时候如果表不存在的话会自动创建表.

  1. package com.jdbc
  2. import java.util.Properties
  3. import org.apache.spark.sql.{SaveMode, SparkSession}
  4. object JDBCWrite {
  5. val url = "jdbc:mysql://zjj101:3306/ry_vue"
  6. val user = "root"
  7. val pw = "root"
  8. def main(args: Array[String]): Unit = {
  9. val spark: SparkSession = SparkSession
  10. .builder()
  11. .master("local[*]")
  12. .appName("JDBCWrite")
  13. .getOrCreate()
  14. val df = spark.read.json("E:\\ZJJ_SparkSQL\\demo01\\src\\main\\resources\\users.json")
  15. //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!写数据!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  16. // 写到jdbc中
  17. // 如果没有这个表的话会自动进行创建
  18. // 如果表存在的话就可以用别的方式
  19. df.write
  20. .format("jdbc")
  21. .option("url", url) //MySQL链接
  22. .option("user", user) //账号
  23. .option("password", pw) //密码
  24. .option("dbtable", "user") //数据库
  25. // .mode("append") //追加写的意思
  26. // .mode(SaveMode.Append) //追加写的意思
  27. .mode(SaveMode.Overwrite) //重写,覆盖原来的.
  28. .save()
  29. //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!读数据!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  30. // 从指定表里面读取数据
  31. //下面是连接jdbc的另外一种方式
  32. val props = new Properties()
  33. props.put("user", "root")
  34. props.put("password", "root")
  35. val df2 = spark.read
  36. .jdbc("jdbc:mysql://zjj101:3306/ry_vue", "user", props)
  37. df2.show //读取操作
  38. spark.close()
  39. }
  40. }

输出

  1. +---+--------+
  2. |age| name|
  3. +---+--------+
  4. | 18|zhangsan|
  5. | 15| lisi|
  6. +---+--------+