使用spark sql向mysql中插入数据
时间: 2024-06-08 21:06:13 浏览: 204
可以使用Spark SQL中的JDBC数据源来向MySQL数据库中插入数据。以下是一个示例代码:
```scala
import org.apache.spark.sql.{SaveMode, SparkSession}
val spark = SparkSession.builder()
.appName("Insert to MySQL with Spark SQL")
.master("local[*]")
.getOrCreate()
// 定义MySQL连接信息
val jdbcHostname = "localhost"
val jdbcPort = 3306
val jdbcDatabase = "test_db"
val jdbcUsername = "root"
val jdbcPassword = "password"
val jdbcUrl = s"jdbc:mysql://${jdbcHostname}:${jdbcPort}/${jdbcDatabase}?user=${jdbcUsername}&password=${jdbcPassword}"
// 创建数据集
val data = Seq(
(1, "Alice", 25),
(2, "Bob", 30),
(3, "Charlie", 35)
)
val df = spark.createDataFrame(data).toDF("id", "name", "age")
// 将数据集插入到MySQL中
df.write
.mode(SaveMode.Append)
.format("jdbc")
.option("url", jdbcUrl)
.option("dbtable", "people")
.option("driver", "com.mysql.jdbc.Driver")
.save()
// 关闭SparkSession
spark.stop()
```
在上面的代码中,我们首先定义了MySQL数据库的连接信息。然后,我们创建了一个包含数据的数据集,并使用`write`方法将其保存到MySQL中。其中,`mode`指定了写入模式(这里使用了追加模式),`format`指定了数据源格式(这里使用了JDBC数据源),`option`方法用于指定其他的连接参数,例如数据库表名和JDBC驱动程序。
在运行代码之前,需要将MySQL JDBC驱动程序添加到Spark的classpath中。可以通过将驱动程序复制到Spark的`jars`目录中来实现。
阅读全文