写spark程序数据计算( 数据库的计算,求和,汇总之类的)连接mysql数据库,写入计算结果

  1. 添加依赖

在项目的 `pom.xml`(Maven)中添加以下依赖:

```xml

<!-- Spark SQL -->

<dependency>

<groupId>org.apache.spark</groupId>

<artifactId>spark-sql_2.12</artifactId>

<version>3.3.0</version>

</dependency>

<!-- MySQL Connector -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>8.0.33</version>

</dependency>

代码

import org.apache.spark.sql.{SparkSession, SaveMode}

object SparkMySQLDemo {

def main(args: Array[String]): Unit = {

// 创建 SparkSession

val spark = SparkSession.builder()

.appName("SparkMySQLDemo")

.master("local[*]") // 生产环境需改为集群模式,如 yarn

.config("spark.sql.shuffle.partitions", "5") // 优化分区数

.getOrCreate()

// 设置 MySQL 连接参数

val jdbcUrl = "jdbc:mysql://localhost:3306/your_database"

val jdbcUsername = "your_username"

val jdbcPassword = "your_password"

try {

// 从 MySQL 读取数据

val df = spark.read

.format("jdbc")

.option("url", jdbcUrl)

.option("dbtable", "source_table") // 要读取的表名

.option("user", jdbcUsername)

.option("password", jdbcPassword)

.load()

// 执行计算(示例:按 category 分组求和)

val resultDF = df.groupBy("category")

.agg(

sum("amount").alias("total_amount"),

count("*").alias("record_count")

)

// 打印计算结果(调试用)

resultDF.show()

// 将结果写入 MySQL

resultDF.write

.format("jdbc")

.option("url", jdbcUrl)

.option("dbtable", "result_table") // 目标表名

.option("user", jdbcUsername)

.option("password", jdbcPassword)

.mode(SaveMode.Append) // 写入模式:覆盖/追加

.save()

println("数据写入 MySQL 成功!")

} catch {

case e: Exception => e.printStackTrace()

} finally {

spark.stop()

}

}

}

相关推荐
阿星AI工作室3 小时前
刘润年中大课笔记:一句话说清AI落地之战的本质
大数据·人工智能·创业创新·商业
189228048617 小时前
NY352固态MT29F32T08GWLBHD6-24QJ:B
大数据·服务器·人工智能·科技·缓存
不开大的凯20777 小时前
麦当秀AiPPT战略转向:从SaaS订阅迈向Token经济,AI办公定价模式迎来新探索
大数据·人工智能
程序鉴定师7 小时前
西安小程序制作的可靠选择与发展前景
大数据·小程序
黎阳之光7 小时前
黎阳之光:以视频孪生重构智慧医院信息化,打造高标项目核心竞争力
大数据·人工智能·物联网·算法·数字孪生
qziovv8 小时前
Git 回退场景
大数据·git·elasticsearch
ZeroNews内网穿透9 小时前
面向 AI 协作的本地客户端能力:ZeroNews Agent Skills
大数据·人工智能·elasticsearch
SelectDB9 小时前
Agent 时代,为什么传统的可观测方案不适用了?
大数据·数据库·数据分析
Elastic 中国社区官方博客10 小时前
快 12 倍的 Elasticsearch 向量索引:使用 GPU 和 CPU 分层部署 NVIDIA cuVS
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·nvidia
鹧鸪云光伏10 小时前
光伏设计软件:多屋脊房型如何设计?
大数据·信息可视化·光伏·光伏设计·光伏图纸