以下是使用Spark SQL将CSV文件读入并写入MySQL数据库的示例代码,以Scala语言为例,前提是已经在项目中添加了MySQL连接驱动的依赖(例如 mysql-connector-java ):
scala
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._
object CsvToMysql {
def main(args: Array[String]): Unit = {
// 创建SparkSession
val spark = SparkSession.builder()
.appName("CsvToMysql")
.master("local[*]")
.getOrCreate()
// 读取CSV文件,假设CSV文件有表头,并且自动推断数据类型
val csvDF = spark.read
.option("header", "true")
.option("inferSchema", "true")
.csv("path/to/your/csv/file.csv")
// 对数据进行一些可能的处理,比如增加一列
val processedDF = csvDF.withColumn("new_column", lit("fixed_value"))
// MySQL数据库连接信息
val jdbcUrl = "jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=UTF-8"
val tableName = "your_table"
val properties = new java.util.Properties()
properties.put("user", "your_username")
properties.put("password", "your_password")
properties.put("driver", "com.mysql.cj.jdbc.Driver")
// 将DataFrame写入MySQL数据库
processedDF.write
.mode("append") // 写入模式,这里是追加模式,还可以用"overwrite"等
.jdbc(jdbcUrl, tableName, properties)
// 关闭SparkSession
spark.stop()
}
}
在上述代码中:
1. 首先创建了 SparkSession ,用于后续的Spark SQL操作。
2. 使用 spark.read 方法读取CSV文件,并设置了相关选项。
3. 对读入的 DataFrame 进行了简单的数据处理(示例中添加了一列固定值的列)。
4. 配置了MySQL数据库的连接信息,包括URL、表名、用户名、密码和驱动。
5. 使用 write.jdbc 方法将处理后的 DataFrame 写入MySQL数据库,并指定了写入模式。
6. 最后关闭了 SparkSession 。
记得将代码中的文件路径、数据库连接信息、表名等替换为实际的值。