当前位置: 首页 > backend >正文

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

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

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

1. 使用 Spark SQL

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. 直接读取数据源为表

# 读取 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_salaryFROM my_tableGROUP BY departmentORDER BY avg_salary DESC
""").show()

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

# 创建全局临时视图
df.createOrReplaceGlobalTempView("global_people")# 在其他 SparkSession 中访问(需要指定 global_temp 数据库)
spark.sql("SELECT * FROM global_temp.global_people").show()

4. 与 Hive 表集成

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

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

注意事项

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

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

http://www.xdnf.cn/news/9511.html

相关文章:

  • OpenCV CUDA模块直方图计算------生成一组均匀分布的灰度级函数evenLevels()
  • 【NLP】将 LangChain 与模型上下文协议 (MCP) 结合使用
  • Pipeline ADC高速高精度模数转换器UIA5301
  • 从零实现富文本编辑器#4-浏览器选区模型核心交互策略
  • LiveGBS作为下级平台GB28181国标级联2016|2022对接海康大华宇视华为政务公安内网等GB28181国标平台查看级联状态及会话
  • 域名解析怎么查询?有哪些域名解析查询方式?
  • Docker快速部署数据同步工具DataX-Web
  • 【AI】Spring AI MCP Server 三种实现方式的区别
  • JWT安全:弱签名测试.【实现越权绕过.】
  • C++ 异步编程与网络编程:工具、协议的层次与协同
  • 深度解析 Dockerfile 配置:构建高效轻量的FastAPI 应用镜像
  • 【Bluedriod】蓝牙协议栈 btm_init 源码解析
  • pycharm找不到高版本conda问题
  • 酒店用品源头厂家推荐
  • Building Android Kernels with Bazel
  • 五、web安全--XSS漏洞(1)--XSS漏洞利用全过程
  • Redis 缓存穿透、缓存雪崩、缓存击穿分别是什么?
  • Docker学习笔记:基础知识
  • 友达光电12.1寸液晶屏G121XN01 V001工控屏
  • 浏览器指纹科普 | 分辨率指纹是什么?
  • AMBA-AHB总线的基本操作和基本传输类型
  • B3694 数列离散化
  • python实战项目71:基于Python的US News世界大学排名数据爬取
  • 科技赋能音乐,指北科技新品闪耀广州国际乐器展
  • 【QueryServer】dbeaver使用phoenix连接Hbase(轻客户端方式)
  • 从0到1:某智慧园区数字孪生项目的技术选型复盘
  • Spring MVC极简入门:从@Reuest到Postman的全链路开发
  • 物流项目第九期(MongoDB的应用之作业范围)
  • neo4j删除所有数据
  • 常规算法学习