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

}

}

}

相关推荐
沧澜sincerely12 分钟前
分布式3PC理论
分布式·一致性协议·3pc
TDengine (老段)41 分钟前
TDengine 时间函数 TODAY() 用户手册
大数据·数据库·物联网·oracle·时序数据库·tdengine·涛思数据
掘金-我是哪吒1 小时前
分布式微服务系统架构第169集:1万~10万QPS的查当前订单列表
分布式·微服务·云原生·架构·系统架构
悟乙己1 小时前
数据科学家如何更好地展示自己的能力
大数据·数据库·数据科学家
Zhao_yani1 小时前
RabbitMQ相关知识
分布式·rabbitmq
东哥说-MES|从入门到精通2 小时前
Mazak MTF 2025制造未来参观总结
大数据·网络·人工智能·制造·智能制造·数字化
我就是全世界2 小时前
【存储选型终极指南】RustFS vs MinIO:5大维度深度对决,95%技术团队的选择秘密!
开发语言·分布式·rust·存储
盟接之桥2 小时前
盟接之桥说制造:在安全、确定与及时之间,构建品质、交期与反应速度的动态平衡
大数据·运维·安全·汽车·制造·devops
链上日记3 小时前
STC携手VEX发起全球首个碳资产RWA生态,泰国峰会即将引爆绿色金融
大数据
用户Taobaoapi20143 小时前
京东商品列表API(JD.item_search)
大数据·数据挖掘·数据分析