SparkSQL 之 Parquet 数据转 DataSet 代码实现
摘要Parquet 是 Spark 生态中最推荐的列式存储格式——Schema 自描述零推断、谓词下推到 Row Group 级别、列式 Vectorized 批量解码比逐行快 3~5x、压缩比高达 3~10x。本文从 spark.read.parquet() 的三种数据源、Parquet 4 级物理布局、谓词下推跳过机制、VectorizedParquetReader、与 JSON/CSV 对比、完整 Options 六个维度配合 2 张架构图 代码实例全面掌握 Parquet → Dataset 的高效实践。关键词Parquet, spark.read.parquet, Predicate Pushdown, Row Group, Vectorized Reader, 列式存储一、开篇为什么 Parquet 是标配Parquet 四大优势 vs JSON/CSV ① 列式存储: 只读需要的列 → I/O 减少 90% ② Schema 自描述: Footer 含完整 Schema → 零推断开销 ③ 谓词下推: Row Group 级 min/max 过滤 → 跳过不相关数据块 ④ 高压缩比: Snappy/Gzip/Zstd → 比文本格式少 3~10x 空间二、Parquet → Dataset 全流程2.1 基本读写// 读取valdfspark.read.parquet(hdfs://data/events/)valdfspark.read.parquet(/path/to/file.parquet)// 写入df.write.mode(overwrite).parquet(hdfs://output/)df.write.partitionBy(year,month).parquet(hdfs://output/)// Hive Parquet 表valdfspark.table(hive_db.parquet_table)2.2 Schema 处理零推断valdfspark.read.parquet(path)// Schema 自动从 Footer 读取// 跨文件 Schema 合并valdfspark.read.option(mergeSchema,true).parquet(path)// 分区发现: /data/year2024/month01/*.parquet// → year 和 month 自动成为 DataFrame 列2.3 DataFrame → Dataset[CaseClass]caseclassEvent(id:Long,name:String,score:Double)valds:Dataset[Event]spark.read.parquet(hdfs://events/).as[Event]ds.filter(_.score80).map(ee.copy(scoree.score*1.1))三、Parquet 内部结构 谓词下推3.1 4 级物理布局Parquet File ├── Row Group 0 (~128MB) ← 谓词下推最小粒度 │ ├── Column Chunk: col_a (Dictionary Page Data Pages) │ └── Column Chunk: col_b ├── Row Group 1 (~128MB) └── Footer: Schema offsets min/max 统计3.2 谓词下推SELECT*FROMeventsWHEREscore80决策过程:RowGroup0: score.max75→ max80→ 整组跳过!RowGroup1: score.max95→ 需要读取RowGroup2: score.min85→ 需要读取 结果: 跳过33%RowGroups零 I/O!3.3 Vectorized Reader传统: for each row → decode col_a → decode col_b → ... Vectorized: 一次 decode 4096 行 col_a → 4096 行 col_b 优势: 循环展开 · SIMD · 零虚函数 · 缓存友好 性能: 比逐行快 3~5x四、核心配置# 读取 spark.sql.parquet.filterPushdowntrue spark.sql.parquet.enableVectorizedReadertrue spark.sql.parquet.mergeSchemafalse # 写入 spark.sql.parquet.compression.codecsnappy # snappy/gzip/lz4/zstd parquet.block.size134217728 # 128MB Row Group parquet.page.size1048576 # 1MB Page # 分区 spark.sql.sources.partitionOverwriteModestatic五、总结Parquet 三大能力Schema 自描述零推断、谓词下推Row Group 级跳过、Vectorized 批量解码3~5x。4 级物理布局File → Row Group(128M) → Column Chunk → Page。vs JSON/CSV列式 自描述 压缩 3~10x 零推断。生产环境首选。作者starzy博客blog.starzy.cnGitHubstarzy1990.github.io专注 AI Agent · LangGraph · RAG · 大数据架构 · 数据工程实践

相关新闻

Perplexity 生成的表格怎么导出?安卓用户请收好这份「无痛迁移」指南

Perplexity 生成的表格怎么导出?安卓用户请收好这份「无痛迁移」指南

Perplexity 生成的表格怎么导出?安卓用户请收好这份「无痛迁移」指南 先回答一个安卓党高频困惑:Perplexity 生成的表格怎么导出,才能不丢格式、不崩排版? 其实解法就藏在 Perplexity 的交互细节里。安卓端浏览器访问 Perplexity …

2026/8/18 19:21:31 阅读更多 →
【多智能体】AQI分析智能体案例讲解

【多智能体】AQI分析智能体案例讲解

目录 案例简介 案例目标 核心功能 技术要点 预期效果 技术栈与核心依赖 编程语言 核心框架和库 项目配置 依赖配置 (requirements.txt) 环境变量设置 项目结构 关键文件说明 核心代码实现 1. 数据模型定义 API响应模型 数据提取模型 用户输入模型 2. AQI分析…

2026/8/18 19:21:31 阅读更多 →
6G网络智能体:AI原生架构与自主运维实战

6G网络智能体:AI原生架构与自主运维实战

1. 从6G愿景到AI原生网络:为什么“智能体”是必选项? 最近和几个做通信协议和网络架构的朋友聊天,话题总绕不开6G。大家普遍的感觉是,5G的“大带宽、低时延、广连接”三板斧虽然厉害,但更多是“管道”能力的升级。到了…

2026/8/18 19:21:31 阅读更多 →

最新新闻

QUICK:GPU 加速的 ab initio / DFT 开源量子化学包—原理、安装实测与横向对比

QUICK:GPU 加速的 ab initio / DFT 开源量子化学包—原理、安装实测与横向对比

QUICK 是 UCSD Gtz Lab 与 Michigan State Merz Lab 联合开发的开源量子化学包,主打 GPU-native HF / DFT 计算、MPI 多卡扩展、内置 QM/MM 接口(与 AmberTools 26 直接集成)。专注于 HF/DFT 计算、几何优化、RESP 电荷和 QM/MM 模拟。最新版本 QUICK-26.03(2026-07-25)已…

2026/8/18 20:39:10 阅读更多 →
九种天气下的蓝调通勤:亚洲成年女性高清提示词实验

九种天气下的蓝调通勤:亚洲成年女性高清提示词实验

封面只负责建立系列节奏;正文保留九张独立高清竖图。 摘要| 同样是蓝色,春雨、干雷雨、海雾、轻雪、太阳雨、季风、秋风、霜冻和雨后蓝调会给面料完全不同的亮度与情绪。本组用九位约 22 岁亚洲成年女性、九种面孔与焦段,完成 5 套…

2026/8/18 20:39:10 阅读更多 →
AI 查库为什么要先做权限交集,再让模型看 Schema?

AI 查库为什么要先做权限交集,再让模型看 Schema?

先确定谁能看什么,再让模型生成 SQL;顺序本身就是安全边界。 摘要| 把数据库结构整包交给模型,再对生成 SQL 做一次关键词过滤,看起来省事,实际上把越权风险提前送进了提示词。本文结合 Microi吾码AI 当前 …

2026/8/18 20:39:10 阅读更多 →
干货:18 张思维导图,后端技术学习路线长这样!

干货:18 张思维导图,后端技术学习路线长这样!

1946年, 世界上第一台名叫「ENIAC」的通用计算机被发明出来, 它正如其名字那般仅仅是用来计算的。后来, 计算机数量变得越来越多起来, 当没有网络的时候, 每一台计算机都将会变成一个孤岛, 如此也就不会有如今互联网的那种繁荣景象了。「计算机网络」这门课程的学习路线是极为清…

2026/8/18 20:39:10 阅读更多 →
利用多台老旧笔记本搭建分布式集群,低成本本地部署800亿参数大模型

利用多台老旧笔记本搭建分布式集群,低成本本地部署800亿参数大模型

这次我们来看一个非常硬核的本地AI部署方案:用多台老旧笔记本搭建一个分布式计算集群,来运行参数量高达800亿(80B)的大语言模型。这个项目的核心思路不是追求单卡的极致性能,而是通过资源整合,让那些被淘汰…

2026/8/18 20:39:10 阅读更多 →
重构复杂条件逻辑:状态模式与策略模式实战

重构复杂条件逻辑:状态模式与策略模式实战

1. 为什么我们需要重构if/switch语句在代码维护过程中,我们经常会遇到这样的场景:一个方法里嵌套着七八层if判断,或者一个switch语句横跨上百行代码。这种代码结构不仅难以阅读和维护,还会带来一系列实际问题。我最近接手的一个电…

2026/8/18 20:38:09 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →