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 特有的扩展功能。

相关推荐
DanCheng-studio7 小时前
网安毕业设计简单的方向答疑
python·毕业设计·毕设
轻抚酸~8 小时前
KNN(K近邻算法)-python实现
python·算法·近邻算法
独行soc9 小时前
2025年渗透测试面试题总结-264(题目+回答)
网络·python·安全·web安全·网络安全·渗透测试·安全狮
汤姆yu10 小时前
基于python的外卖配送及数据分析系统
开发语言·python·外卖分析
如何原谅奋力过但无声10 小时前
TensorFlow 1.x常用函数总结(持续更新)
人工智能·python·tensorflow
翔云 OCR API10 小时前
人脸识别API开发者对接代码示例
开发语言·人工智能·python·计算机视觉·ocr
AndrewHZ11 小时前
【图像处理基石】如何在图像中提取出基本形状,比如圆形,椭圆,方形等等?
图像处理·python·算法·计算机视觉·cv·形状提取
温轻舟12 小时前
Python自动办公工具05-Word表中相同内容的单元格自动合并
开发语言·python·word·自动化办公·温轻舟
习习.y13 小时前
python笔记梳理以及一些题目整理
开发语言·笔记·python
撸码猿13 小时前
《Python AI入门》第10章 拥抱AIGC——OpenAI API调用与Prompt工程实战
人工智能·python·aigc