一、连接MySQL数据库
# 配置MySQL连接参数
prop = {'user': 'root', 'password': '123456', 'driver': 'com.mysql.cj.jdbc.Driver'}
url = 'jdbc:mysql://localhost:3306/people' # 数据库URL
二、从MySQL读取数据
# 读取表数据到DataFrame
df = spark.read.jdbc(properties=prop, url=url, table='people_info')
df.show() # 展示数据
三、向MySQL写入数据
# 1. 读取CSV数据源
df1 = spark.read.csv('file:///home/spark/mydata/people_info.csv', schema='id long, gender string, height int')
# 2. 创建临时视图
df1.createOrReplaceTempView('my_people_info')
# 3. 筛选前10条记录
df2 = spark.sql('SELECT * FROM my_people_info LIMIT 10')
# 4. 追加写入MySQL表
df2.write.jdbc(properties=prop, url=url, table='people_info', mode='append')
# 5. 验证写入结果
spark.read.jdbc(prop, url, 'people_info').show() # 重新读取并展示
四、从文件读取不同格式数据
# 读取JSON文件
spark.read.json('file:///home/spark/mydata/people_info.json').show()
spark.read.format('json').load('file:///home/spark/mydata/people_info.json').show()
# 读取Parquet文件
spark.read.load('file:///usr/local/spark/examples/src/main/resources/users.parquet').show()
五、DataFrame常用操作
1. 数据筛选(where()/filter())
df = spark.read.csv('file:///home/spark/mydata/stus.csv', header=True, inferSchema=True)
# 条件筛选示例
df.where('age > 10').show() # SQL表达式
df.where('age > 10 AND score > 80').show() # 多条件AND
df.where(df.age > 10).show() # 列表达式
df.where((df.age > 10) & (df.score > 80)).show() # 位运算组合条件
2. 数据排序(sort()/orderBy())
df.sort('age').show() # 默认升序
df.sort(df.age.desc()).show() # 降序排列
df.sort(df.age.desc(), df.score.asc()).show() # 多列不同排序
df.sort(['age', 'score'], ascending=[True, False]).show() # 指定每列排序方式
3. 数据分组聚合(groupBy())
# 常用聚合函数:count(), avg(), max(), min(), sum()
df.groupBy('age').count().show() # 按年龄分组计数
df.groupBy('gender').avg('height').show() # 按性别计算平均身高
df.groupBy(df.age > 10).avg('score').show() # 按条件分组聚合
4. 列操作(select()/selectExpr())
df.select('*').show() # 选择所有列
df.select('name', 'age').show() # 选择指定列
df.selectExpr('name', 'age * 2 AS new_age').show() # 表达式计算并重命名

1534

被折叠的 条评论
为什么被折叠?



