写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: ArrayString): 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()

}

}

}

相关推荐
满怀冰雪32 分钟前
24-PaddleClas 模型评估、导出与推理部署入门
大数据·人工智能·python·深度学习·paddle
薛定谔的悦3 小时前
储能 EMS 的功率策略:从一块电表到一次逆流的 200 毫秒
大数据·linux·能源·储能·bms
2601_962218476 小时前
万象生鲜系统区块链溯源技术帮助生鲜企业搭建食品安全数字化体系
大数据·运维·微服务·云原生·架构
东方-教育技术博主6 小时前
自动编码在教育场景中的重要性:一项基于多源证据的深度综述
大数据·人工智能
liuqs3327 小时前
机器人产业加速发展,制造业正在迎来新的自动化探索
大数据·人工智能
腾讯云大数据7 小时前
DataBuddy数据语义驱动的企业Agent Runtime实践
大数据·人工智能·腾讯云·agent
cvcode_study7 小时前
Ollama+ComfyUI 多模态
大数据·人工智能·python
四方云8 小时前
把电话能力无缝嵌入企业自有CRM
大数据·人工智能
STQY燊桐启元(深圳)电子科技8 小时前
医疗精密电源散热方案:相变陶瓷片保障医疗设备长效稳定低干扰
大数据·网络·人工智能
陕西企来客9 小时前
2026年8月买门窗主要看什么参数?选购攻略
大数据·买门窗主要看什么参数