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

学习进度 10

DataFrame 进阶操作与 WordCount 重构
一、DataFrame 核心进阶操作实操
先拿 “姓名、年龄、城市、薪资” 的 CSV 数据练手,把常用操作过了一遍:
聚合统计:用groupBy("城市").agg(count("*").alias("人数"), avg("薪资").alias("平均薪资"))统计各城市人数和平均薪资,不用像 RDD 那样手动写reduceByKey,函数名直观,还能直接给结果列起别名;
多表关联:新建了一张 “城市 - 省份” 的小表,用df1.join(df2, df1("城市") == df2("城市"), "left")做左关联,和 SQL 的 join 逻辑完全一致,新手不用额外记语法;
排序与去重:df.orderBy(df("薪资").desc()).dropDuplicates(["城市"])按薪资降序排列,再按城市去重,一行代码搞定,比 RDD 的sortBy+distinct组合简洁太多。
试下来发现,DataFrame 的函数封装得特别全,基本的业务统计需求不用手写底层逻辑,效率提升不少。
二、用 DataFrame 重构 WordCount
核心目标是把 RDD 版的 WordCount 改成 DataFrame 版,步骤比想象中简单:
读取文本文件:val df = spark.read.text("file:///D:/Spark/words.txt"),先把文本读成只有一列(value)的 DataFrame;
分词处理:用split函数拆分单词,再用explode扁平化,val wordDF = df.select(explode(split(col("value"), " ")).alias("word")),这一步替代了 RDD 的flatMap;
过滤空值 + 统计:wordDF.filter(col("word").nonEmpty).groupBy("word").count().orderBy(col("count").desc()),过滤空单词后按单词分组计数,再降序排列。
整个过程没写一行map/flatMap,全靠 DataFrame 的内置函数,代码行数少了一半,可读性也高。跑出来的结果和 RDD 版一致,但写代码的速度快了很多,就是第一次用explode函数时卡了下,查了文档才知道它能把数组拆成多行。
三、今日总结
今天的核心收获是掌握了 DataFrame 的进阶操作,能用它完成常见的结构化数据处理,还重构了经典案例,验证了 DataFrame 的便捷性。

http://www.jsqmd.com/news/304217/

相关文章:

  • 基于 GEE 的 MODIS 昼夜地表温度数据可视化与导出全流程解决方案 - 教程
  • Sealos 私有化部署,15 分钟搞定内网 K8s 云平台
  • 东美阿胶是正规公司吗?
  • 一键关闭系统所有LED灯:基于AI助手协作的完整排查与实现
  • 东美阿胶
  • 如何为RTL8211F网卡配置rgmii-id模式并优化tx/rx delay
  • 东美阿胶和东阿阿胶什么关系?
  • 矿井污水处理设备推荐生产厂家:从技术、案例看谁更靠谱
  • 实验室LIMS系统选型全攻略:从合规到效能的深度解析
  • springmvc 参数校验
  • springmvc 全局异常处理 and 拦截器
  • 【Linux 驱动开发】六. 中断和阻塞/非阻塞IO的实现
  • 基于spring+vue的校园勤工俭学平台[spring]-计算机毕业设计源码+LW文档
  • 基于SpringBoot的社区医疗服务管理小程序的设计与开发(源码+lw+部署文档+讲解等)
  • 计算机毕业设计springboot飞机票预定系统 基于SpringBoot的航班在线预订平台 SpringBoot驱动的民航电子客票销售系统
  • 基于SpringBoot的扶贫助农系统及其小程序的实现(源码+lw+部署文档+讲解等)
  • 计算机毕业设计springboot飞羽羽毛球俱乐部管理系统 基于SpringBoot的羽球馆综合运营平台 SpringBoot驱动的羽毛球会所活动与场地预约系统
  • 基于SpringBoot的健康管理微信小程序的设计与实现(源码+lw+部署文档+讲解等)
  • 基于SpringBoot的旅游线路定制微信小程序(源码+lw+部署文档+讲解等)
  • 计算机毕业设计springboot飞机票订票管理系统 基于SpringBoot的航空客运票务管理平台 SpringBoot驱动的在线航班预订与订单管理系统
  • 2026最新益气健脾滋补品/益气健脾保健品/益气健脾口服液企业推荐复方红衣补血口服液:传承创新,这家老字号实力引领
  • AsyPPO_ 轻量级mini-critics如何提升大语言模型推理能力 - 实践
  • 电脑加密软件应该怎么选择?六款电脑加密软件推荐(建议收藏)
  • 链家二手房数据爬取、聚类分析与可视化展示实践
  • MySQL UDF 一例
  • IK-M20的体验
  • VRRP:智算中心网络高可用的关键技术
  • Python包管理|如何解决 pip install requests[socks] 报错:zsh:1: no matches found: requests[socks] 问题
  • 如何解决 pip install 与 PyCharm 解释器版本不一致导致导入失败问题
  • 如何解决 pip install 导入失败 因 PYTHONPATH 污染(本地同名包遮蔽)问题