配置 Spark 通过 JDBC 连接数据库MySQL,编程实现利用 DataFrame 插入如表 6-3 所示的两行数据到 MySQL 中,最后打印出 age 的最大值和 age 的总和。
时间: 2024-05-03 10:17:55 浏览: 188
spark rdd转dataframe 写入mysql的实例讲解
首先需要将 MySQL 的 JDBC 驱动程序添加到 Spark 的 classpath 中,可以通过在 Spark-submit 命令中指定 driver-class-path 参数或者将 JDBC 驱动程序放置在 Spark 的 jars 目录下。
接下来可以使用 SparkSession 对象创建 DataFrame,并使用 DataFrame 的 write 方法将数据插入到 MySQL 数据库中。代码示例如下:
```scala
import org.apache.spark.sql.{DataFrame, SparkSession}
object MySQLDemo {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder()
.appName("MySQLDemo")
.master("local[*]")
.getOrCreate()
val url = "jdbc:mysql://localhost:3306/test"
val table = "people"
val properties = new java.util.Properties()
properties.setProperty("user", "root")
properties.setProperty("password", "password")
val data: DataFrame = spark.createDataFrame(Seq(
("Tom", 23),
("Alice", 25)
)).toDF("name", "age")
data.write.mode("overwrite").jdbc(url, table, properties)
val result = spark.read.jdbc(url, table, properties).agg(max("age"), sum("age"))
result.show()
spark.stop()
}
}
```
其中,url、table 和 properties 分别为 JDBC 连接 MySQL 数据库所需的连接字符串、表名和属性配置。data 是要插入到 MySQL 中的 DataFrame,使用 write 方法写入数据库,其中 mode("overwrite") 表示如果表已经存在则覆盖写入。读取 MySQL 中的数据并计算 age 的最大值和总和,最后使用 show 方法打印结果。
阅读全文