2025.4.1学习笔记

一、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读取时使用分区查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值