PySpark 中使用 SQL 语句和表进行计算

PySpark 中使用 SQL 语句和表进行计算

PySpark 完全支持使用 SQL 语句和表进行 Spark 计算。以下是几种常见的使用方式:

1. 使用 Spark SQL

python 复制代码
from pyspark.sql import SparkSession

# 创建 SparkSession
spark = SparkSession.builder.appName("SQLExample").getOrCreate()

# 创建 DataFrame
data = [("Alice", 34), ("Bob", 45), ("Cathy", 29)]
df = spark.createDataFrame(data, ["name", "age"])

# 将 DataFrame 注册为临时视图
df.createOrReplaceTempView("people")

# 执行 SQL 查询
result = spark.sql("SELECT name, age FROM people WHERE age > 30")
result.show()

2. 直接读取数据源为表

python 复制代码
# 读取 CSV 文件并注册为表
df = spark.read.csv("path/to/file.csv", header=True, inferSchema=True)
df.createOrReplaceTempView("my_table")

# 执行复杂 SQL 查询
spark.sql("""
  SELECT department, AVG(salary) as avg_salary
  FROM my_table
  GROUP BY department
  ORDER BY avg_salary DESC
""").show()

3. 使用全局临时视图(跨会话)

python 复制代码
# 创建全局临时视图
df.createOrReplaceGlobalTempView("global_people")

# 在其他 SparkSession 中访问(需要指定 global_temp 数据库)
spark.sql("SELECT * FROM global_temp.global_people").show()

4. 与 Hive 表集成

如果配置了 Hive 支持,可以直接查询 Hive 表:

python 复制代码
# 查询已存在的 Hive 表
spark.sql("SELECT * FROM hive_database.hive_table").show()

注意事项

  1. 临时视图只在当前 SparkSession 中有效
  2. 对于大数据集,Spark SQL 会自动优化执行计划
  3. 可以混合使用 DataFrame API 和 SQL 查询
  4. 确保在集群模式下正确配置了资源

PySpark 的 SQL 支持非常完整,包括大多数标准 SQL 功能以及一些 Spark 特有的扩展功能。

相关推荐
过期的秋刀鱼!15 分钟前
LangChain-D1-模型的工作流程
人工智能·python·langchain
萤火工厂目视化设计26 分钟前
智能制造与企业文化目视化浪潮下:中小工厂的机遇与挑战
python·制造
DeepVisionary2 小时前
从GPT-5.6 Sol的Ultrafast模式看推理速度竞赛:750 token/秒背后,Cerebras的晶圆级生意
python·自动化
leisoo80972 小时前
财报数据怎么排雷本地化Python构建财务异常预警系统
人工智能·python·算法
小柯南敲键盘3 小时前
跨马翻译:跨境电商批量图片翻译与视频字幕一站式工具
人工智能·python·音视频
卷无止境3 小时前
FastAPI Guard 全解析,从概念到工程落地的实战指南
后端·python
卷无止境3 小时前
FastAPI Users 全面解析:概念、原理与工程实战
后端·python
COOLMO研究AI4 小时前
Python 如何在 AI 接口中实现请求幂等性:防止重复提交与重复扣费
人工智能·python·php
CTA量化套保4 小时前
新手学量化,先做能复查的小流程
人工智能·python
ctlover4 小时前
Python文件操作
开发语言·python