一、MySQL安装与配置详解
1. Linux环境安装MySQL
# 更新软件源并安装 sudo apt update sudo apt -y install mysql-server # 服务管理命令 sudo systemctl start mysql # 启动服务 sudo systemctl enable mysql # 设置开机自启 sudo systemctl status mysql # 查看服务状态
2. 配置root用户访问
-- 登录MySQL控制台 sudo mysql -- 修改认证方式并设置密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES; -- 刷新权限 QUIT; -- 退出
注意:MySQL 8.0默认使用auth_socket插件认证,需修改为mysql_native_password才能通过密码登录
二、MySQL基本操作实战
1. 数据库管理
CREATE DATABASE people; -- 创建数据库 SHOW DATABASES; -- 查看所有库 USE people; -- 切换数据库
2. 表操作示例
CREATE TABLE people_info ( id BIGINT PRIMARY KEY AUTO_INCREMENT, gender VARCHAR(10), height INT ) ENGINE=InnoDB; -- 指定存储引擎 SHOW TABLES; -- 查看表列表 DESCRIBE people_info; -- 查看表结构
3. 数据操作
-- 插入数据(自增ID可不指定) INSERT INTO people_info (gender, height) VALUES ('F', 168), ('M', 175); -- 物理存储路径 /var/lib/mysql/people/people_info.ibd
三、Spark SQL连接MySQL全流程
1. 驱动配置
# 解压并安装JDBC驱动 tar -zxf mysql-connector-j-8.0.31.tar.gz cp mysql-connector-j-8.0.31/mysql-connector-j-8.0.31.jar $SPARK_HOME/jars/
2. PySpark连接配置
from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("MySQLDemo") \ .getOrCreate() prop = { 'user': 'root', 'password': '123456', 'driver': 'com.mysql.cj.jdbc.Driver' } jdbc_url = "jdbc:mysql://localhost:3306/people?serverTimezone=UTC" df = spark.read.jdbc( url=jdbc_url, table="people_info", properties=prop ) df.show()
四、Spark DataFrame创建六大方式
1. 从集合创建
from pyspark.sql.types import * data = [[4, 'shop', 13, 88, 'w']] schema = StructType([ StructField("id", IntegerType()), StructField("name", StringType()), StructField("age", IntegerType()), StructField("score", IntegerType()), StructField("gender", StringType()) ]) df1 = spark.createDataFrame(data, schema)
2. 从文件创建
# CSV文件(自动推断类型) df2 = spark.read.csv( path='file:///data.csv', header=True, inferSchema=True ) # JSON文件(处理特殊文件名) df3 = spark.read.json('file:///data.json')
3. 从Parquet读取
df4 = spark.read.parquet('hdfs:///data.parquet')
五、DataFrame常用操作方法
方法 | 功能描述 |
---|---|
printSchema() | 打印字段结构信息 |
show(n=20) | 显示前n行数据 |
describe() | 统计数值型字段概要信息 |
columns | 获取所有字段名(属性访问) |
dtypes | 获取字段名及类型(属性访问) |
六、疑难问题解决方案
1. 网络配置异常处理
# 重启网络服务 sudo systemctl restart networking # 重置网络配置 sudo service network-manager stop sudo rm /var/lib/NetworkManager/NetworkManager-state sudo service network-manager start
2. 彻底卸载MySQL
# 停止服务并卸载 sudo systemctl stop mysql sudo apt remove --purge mysql-* sudo apt autoremove && sudo apt autoclean # 清除残留文件 sudo rm -rf /var/lib/mysql sudo rm -rf /etc/mysql
七、建议
-
生产环境避免使用root直接连接
-
为应用创建专用数据库账号
-
定期备份重要数据
-
大数据量查询使用分页机制
-
建立合适索引提升查询效率
-
Spark读取时使用分区查询