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

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.lryc.cn/news/2395702.html

相关文章:

  • [Python] Python中的多重继承
  • 在 RedHat 系统(RHEL 7/8/9)中安装 ​​pythonnet​​ 和 ​​.NET Core​​ 的完整指南
  • vr中风--数据处理模型搭建与训练
  • Socket网络编程之UDP套件字
  • 前端学习(7)—— HTML + CSS实现博客系统页面
  • Bert和GPT区别
  • 聊一聊接口测试中缓存处理策略
  • RuoYi前后端分离框架实现前后端数据传输加密(二)之前端篇
  • 如何使用.Net Reactor 批量加密 DLL
  • 基于视觉的车道线检测完整代码:让驾驶更安全的开源解决方案
  • Intellij IDEA 查找接口实现类的快捷键
  • 鸿蒙仓颉开发语言实战教程:自定义tabbar
  • 03.MySQL表的操作详解
  • 28 C 语言作用域详解:作用域特性(全局、局部、块级)、应用场景、注意事项
  • MySQL 事务解析
  • 题海拾贝:压缩字符串
  • 【Hive 运维实战】一键管理 Hive 服务:Metastore 与 HiveServer2 控制脚本开发与实践
  • 振动力学的三类基本问题
  • 04.MySQL数据类型详解
  • 移动端 UI自动化测试学习之Appium框架(包含adb调试工具介绍)
  • CS144 - Lecture 2
  • B站视频下载器 v1.0.4|免登录下载1080P视频
  • AIGC学习笔记(8)——AI大模型开发工程师
  • [蓝桥杯]剪格子
  • 明远智睿SSD2351开发板:语音机器人领域的变革力量
  • Mybtais框架各配置文件主要内容详解(一)
  • Co-IP—验证蛋白互作的不二之选
  • 数据可视化(第4、5、6次课)
  • DAY 18 推断聚类后簇的类型
  • 结合源码分析Redis的内存回收和内存淘汰机制,LRU和LFU是如何进行计算的?