Spark SQL 读取 CSV 文件,并将数据写入 MySQL 数据库

在 Spark 中,可以使用 Spark SQL 读取 CSV 文件,并将数据写入 MySQL 数据库。以下是一个完整的示例,展示如何实现这一过程。

环境准备

  1. 安装 MySQL:确保 MySQL 数据库已安装并运行。

  2. 创建 MySQL 数据库和表

    sql 复制代码
    CREATE DATABASE sparkdb;
    USE sparkdb;
    
    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(50),
        age INT,
        country VARCHAR(50)
    );
  3. 下载 MySQL JDBC 驱动

    • MySQL 官方网站 下载 MySQL JDBC 驱动(mysql-connector-java-x.x.xx.jar)。
    • 将下载的 JAR 文件放置在 Spark 的 jars 目录下(例如 spark-3.3.0/jars/)。

示例代码

以下是一个完整的 Scala 示例代码,展示如何读取 CSV 文件并将其写入 MySQL 数据库:

scala 复制代码
import org.apache.spark.sql.{SparkSession, DataFrame}

object CsvToMySQL {
  def main(args: Array[String]): Unit = {
    // 初始化 SparkSession
    val spark = SparkSession.builder
      .appName("CsvToMySQL")
      .master("local[*]")
      .getOrCreate()

    // 读取 CSV 文件
    val csvFilePath = "path/to/users.csv" // 替换为你的 CSV 文件路径
    val df: DataFrame = spark.read
      .option("header", "true") // 第一行是表头
      .option("inferSchema", "true") // 自动推断数据类型
      .csv(csvFilePath)

    // 查看读取的数据
    df.show()

    // 配置 MySQL 数据库连接信息
    val jdbcUrl = "jdbc:mysql://localhost:3306/sparkdb"
    val jdbcUser = "root" // 替换为你的 MySQL 用户名
    val jdbcPassword = "password" // 替换为你的 MySQL 密码
    val jdbcTable = "users"

    // 将数据写入 MySQL 数据库
    df.write
      .format("jdbc")
      .option("url", jdbcUrl)
      .option("dbtable", jdbcTable)
      .option("user", jdbcUser)
      .option("password", jdbcPassword)
      .mode("append") // 如果表已存在,追加数据
      .save()

    // 停止 SparkSession
    spark.stop()
  }
}

示例 CSV 文件

假设你的 CSV 文件 users.csv 内容如下:

csv 复制代码
name,age,country
Alice,25,China
Bob,30,USA
Charlie,35,Japan
David,40,Germany

运行步骤

  1. 保存代码 :将上述代码保存为 CsvToMySQL.scala 文件。
  2. 编译和运行
    • 使用 SBT 或 Maven 构建项目。
    • 在 IntelliJ IDEA 中运行程序。
  3. 验证结果
    • 登录到 MySQL 数据库,检查 sparkdb 数据库中的 users 表,确保数据已正确插入。

注意事项

  1. CSV 文件路径 :确保 csvFilePath 指向正确的 CSV 文件路径。
  2. MySQL 用户名和密码:替换为你的实际 MySQL 用户名和密码。
  3. JDBC 驱动 :确保 MySQL JDBC 驱动已正确放置在 Spark 的 jars 目录下。
  4. 数据模式 :在写入数据库时,mode("append") 表示追加数据。如果需要覆盖表,可以使用 mode("overwrite")
  5. 性能优化 :对于大规模数据写入,可以考虑使用批量插入(batchsize)等优化选项。

通过以上步骤,你可以使用 Spark SQL 读取 CSV 文件,并将数据写入 MySQL 数据库。

相关推荐
许泽宇的技术分享几秒前
Text2Sql.Net架构深度解析:从自然语言到SQL的智能转换之道
sql·架构·.net
武子康4 分钟前
大数据-91 Spark广播变量:高效共享只读数据的最佳实践 RDD+Scala编程
大数据·后端·spark
wearegogog12311 分钟前
MySQL中实施排序(sorting)及分组(grouping)操作
数据库·mysql
2301_8035545220 分钟前
MySQL 主从读写分离架构
数据库·mysql·架构
正在走向自律27 分钟前
Ubuntu系统下Python连接国产KingbaseES数据库实现增删改查
开发语言·数据库·python·ubuntu·kingbasees·ksycopg2
DreamNotOver40 分钟前
基于Spark的中文文本情感分析系统研究
大数据·分布式·spark·情感分析
没有bug.的程序员1 小时前
Redis 内存管理机制:深度解析与性能优化实践
java·数据库·redis·性能优化·内存管理机制
小蒜学长1 小时前
基于SpringBoot+Vue的健身房管理系统的设计与实现(代码+数据库+LW)
java·数据库·vue.js·spring boot·后端
失散131 小时前
分布式专题——2 深入理解Redis线程模型
java·数据库·redis·分布式·架构
DemonAvenger1 小时前
数据库迁移实战:最小化停机时间的方法与经验分享
数据库·sql·性能优化