SparkSql学习---链接MySQL数据库并更新数据

本文介绍了如何在Python环境下,通过SparkSession连接MySQL数据库,包括读取现有表数据、创建数据库和表结构,以及使用JDBC将数据从CSV文件写入数据库。特别提到了驱动程序的选择问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要先向环境中添加mysql的jar包:

 

数据库端口:3306

用户:root

密码:root

数据库:spark

第一种写法:在已有的表中读取和添加数据

创建数据库sql语句:

CREATE database spark;
use spark;
create table student (id int(4), name char(20), gender char(4), age int(4));
alter table student change id id int auto_increment primary key;
insert into student values(1,'Xueqian','F',23);
insert into student values(2,'Weiliang','M',24);
select * from student;

from pyspark.sql.types import *
from pyspark.sql import SparkSession

if __name__ == '__main__':
    # 0. 构建执行环境入口对象SparkSession
    spark = SparkSession.builder.\
        appName("test").\
        master("local[*]").\
        config("spark.sql.shuffle.partitions
### Spark SQL 数据源介绍及使用方法 #### 初始化SparkSession 为了能够使用Spark SQL的功能,初始化`SparkSession`是必要的。这一步骤提供了入口点用于编程式的使用SQL以及DataFrame API。通过配置`SparkSession.builder()`可以设置应用程序名称、指定运行模式以及其他属性[^1]。 ```scala import org.apache.spark.sql.SparkSession val spark: SparkSession = SparkSession .builder() .appName("DataSourcesExample") .master("local[*]") .getOrCreate() ``` #### 支持的数据格式与操作方式 Spark SQL支持多种数据格式作为其输入输出源,其中包括但不限于: - **Parquet**: 是一种高效的列式存储文件格式,非常适合分析型应用。 - **JSON**: 可以轻松加载和保存结构化或半结构化的JSON文档集合。 - **CSV**: 能够处理逗号分隔值文件,允许自定义字段分隔符和其他解析选项。 - **JDBC**: 提供了连接关系数据库的能力,使得可以直接执行SQL语句或者将表格映射为DataFrame对象[^2]。 对于每种类型的文件,在读写过程中都可以附加额外参数来自定义行为,比如调整编码格式或是设定压缩算法等。 #### 执行简单查询 一旦建立了针对特定数据集的DataFrame视图之后,就可以像对待传统的关系型数据库那样对其进行标准SQL查询。下面的例子展示了如何基于内存中的表执行简单的过滤条件检索展示前几条记录。 ```sql spark.sql("SELECT name FROM people WHERE age=19").show ``` #### 使用JDBC接口访问外部RDBMS 当涉及到与其他系统的集成时,借助于内置的支持库,可以通过JDBC协议方便地同任何兼容的标准Java数据库驱动程序建立链接。此功能特别适用于ETL流程或者是需要定期同步少量元数据的情况。 ```scala val jdbcDF = spark.read .format("jdbc") .option("url", "jdbc:mysql://localhost:3306/mydb") .option("dbtable", "my_table") .option("user", "username") .option("password", "pwd") .load() ``` #### JSON 文件的操作实例 除了上述提到的传统结构化数据之外,现代Web服务产生的大量非结构化日志通常是以JSON的形式存在的。因此,掌握好对这类资源的有效管理同样至关重要。这里给出了一段完整的代码片段用来说明怎样从本地磁盘或者分布式文件系统(HDFS)上获取JSON文件的内容,进一步构建可供后续计算使用的逻辑计划[^4]。 ```scala // 加载单个JSON文件 val userDF = spark.read.json("/path/to/user.json") // 创建临时视图表以便后续查询 userDF.createOrReplaceTempView("users") // 运行复杂查询将结果另存新变量 val resultDF = spark.sql(""" SELECT u.name, s.score FROM users AS u JOIN scores AS s ON u.id = s.user_id """) resultDF.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值