尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Spark SQL - Recursive CTE

Spark SQL - Recursive CTE
📅 发布时间:2026/6/19 10:46:16
Spark SQL - Recursive CTE
Can you give me an example to query parent-child hierarchy using Spark SQL recursive CTE?
 
ChatGPT said:

Sure! Here are clear, complete Spark SQL examples that show how to query a parent-child hierarchy using a recursive CTE.
(Supported in Spark 3.4+.)


⭐ Example Scenario

Suppose you have a table:

CREATE TABLE org (id INT,parent_id INT,name STRING
);

Example data:

idparent_idname
1 NULL CEO
2 1 VP Eng
3 1 VP Sales
4 2 Manager A
5 2 Manager B
6 4 Engineer

This forms a tree:

CEO├─ VP Eng│    ├─ Manager A│    │     └─ Engineer│    └─ Manager B└─ VP Sales

 


✅ Spark SQL Recursive CTE Example

WITH RECURSIVE org_tree AS (-- 1. Anchor: all root nodesSELECTid,parent_id,name,CAST(name AS STRING) AS path,0 AS levelFROM orgWHERE parent_id IS NULLUNION ALL-- 2. Recursive: join children to parentsSELECTc.id,c.parent_id,c.name,CONCAT(p.path, ' > ', c.name) AS path,p.level + 1 AS levelFROM org cJOIN org_tree pON c.parent_id = p.id
)SELECT *
FROM org_tree
ORDER BY path;

 


✔ Output

idparent_idnamepathlevel
1 NULL CEO CEO 0
2 1 VP Eng CEO > VP Eng 1
3 1 VP Sales CEO > VP Sales 1
4 2 Manager A CEO > VP Eng > Manager A 2
5 2 Manager B CEO > VP Eng > Manager B 2
6 4 Engineer CEO > VP Eng > Manager A > Engineer 3

🔍 How it works

1. Anchor query

Gets root rows (parent_id IS NULL).

2. Recursive query

Keeps joining child rows to the current “tree”.

3. Spark handles recursion

Spark automatically expands:

level 0 → level 1 → level 2 → …

Until no more child rows exist.


⭐ Bonus: Query all descendants of a specific id

WITH RECURSIVE sub AS (SELECT *FROM orgWHERE id = 2        -- start from VP EngUNION ALLSELECT c.*FROM org cJOIN sub p ON c.parent_id = p.id
)
SELECT * FROM sub;

 


⭐ Bonus: Query all ancestors of a specific id

WITH RECURSIVE ancestors AS (SELECT *FROM orgWHERE id = 6         -- EngineerUNION ALLSELECT p.*FROM org pJOIN ancestors c ON p.id = c.parent_id
)
SELECT * FROM ancestors;

 

 

相关新闻

  • 2025 最新推荐!橡胶导热剂源头厂家权威测评榜单:五维筛选优质供应商,助企业精准采购
  • 2025年质量好的燃油蒸汽锅炉厂家最新实力排行
  • 2025 最新振动筛源头厂家权威推荐榜:实验 / 防爆 / 精细 / 分级 / 粉末专用振动筛设备甄选,5 大核心维度测评

最新新闻

  • 2026襄阳2026正规漏水检测维修公司精选口碑榜TOP5权威推荐-精准定位检测漏水点-专业防水补漏堵漏维修、卫生间/厨房/屋顶/天沟/地下室/阳台防水漏水检测维修 - 安佳防水
  • 5步掌握FitGirl游戏启动器:高效管理压缩游戏的终极工具
  • 2026年西安评价高的玻璃门生产厂家哪家强 - 品牌鉴赏官2026
  • 江门报名 CPPM 注册采购经理哪家靠谱?机构选择避坑指南 - 众智商学院课程中心
  • 如何在OBS直播中添加实时语音识别字幕:免费开源插件终极指南
  • 如何快速掌握跨设备控制:终极多平台键鼠共享方案

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号