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

12-pyspark的RDD算子注意事项总结

目录

    • 相近算子异同总结
      • 相近变换算子异同
        • foreach和foreachPartition
        • fold和reduce
        • coalesce和repatition
      • 相近动作算子异同
        • cache和persist
    • 算子注意事项
      • 需要注意的变换算子
      • 需要注意的动作算子


PySpark实战笔记系列第三篇

  • 10-用PySpark建立第一个Spark RDD(PySpark实战笔记系列第一篇)
  • 11-pyspark的RDD的变换与动作算子总结(PySpark实战笔记系列第二篇))
  • 12-pyspark的RDD算子注意事项总结(PySpark实战笔记系列第三篇)

相近算子异同总结

相近变换算子异同

foreach和foreachPartition
  • 在应用foreachPartition操作时,定义的函数f在函数体中打印值时,需要用for x in iter进行循环。foreach操作则可直接用print(x)打印
  • 一般来说,利用foreachPartition效率比foreach要高,foreachPartitions操作是一次性处理一个partition的数据。

在这里插入图片描述

fold和reduce
  • fold函数和reduce函数功能是相同的,差别在于fold可以提供一个初始值来进行聚合
  • eg:有四个元素[1,2,3,4],reduce是直接把四个元素累加,即sum;fold则可以设定一个初始值,再进行累加,比如初始值是10,则就是10+1+2+3+4这样的累加。
coalesce和repatition
  • repartition()方法就是coalesce()方法shuffle为true的情况。

  • 如果要减少分区数量,建议采用rdd.coalesce(numPartitions, false)方法,这样可以避免shuffle导致数据混洗,从而提高计算效率!

    【备注】:在实际计算中,有时可能需要重新设置RDD的分区数量,如果要处理的数据量小,那么默认的分区可能比较多,这就可能导致计算速度比较慢(不同分区之间的任务调度时间比计算数据本身耗时),因此在计算过程中,可以设置一个比较合理的分区数,从而提高计算效率。

相近动作算子异同

cache和persist
  • rdd.cache()在RDD对象上进行缓存操作,后续的RDD操作会直接从内存中加载数据进行计算
  • 缓存操作rdd.persist(storageLevel),它可以指定存储级别storageLevel。

算子注意事项

需要注意的变换算子

  • takeSample操作:会将RDD整个加载到driver端的内存中,因此takeSample操作应用需在RDD数据不大的情况下。
  • randomSplit操作:这种随机分割在一些数据挖掘或者机器学习算法中非常有用,由于这些算法需要数据的训练集合和测试集合,因此需要把总的数据集合进行随机切分,比如70%用于训练,30%用于测试。
  • Python 3+环境下,在Spark集群上使用distinct()、reduceByKey()和join()等几个函数时,可能会触发PYTHONHASHSEED异常,即Randomness of hash of string should be disabledvia PYTHONHASHSEED,此时可以在在spark-defaults.conf设置spark.executorEnv.PYTHONHASHSEED=0。
  • cartesian操作:如果rdd1和rdd2元素个数比较多,直接进行cartesian计算可能会出现内存不足的情况。

需要注意的动作算子

  • collect操作:对于少量RDD数据的观察非常有用,海量会引起内存不足等情况。因为collect操作会将RDD数据汇总到一处,如果数据量非常大,那么可能会出现内存不足等情况,因此不适合海量数据的查看。
  • saveAsTextFile操作:数据保存当设定的目录不存在时,执行此操作则会报错。生成的数据是多个文件组成的。

参考文档:

  • https://spark.apache.org/docs/latest/api/python/reference/pyspark.html
  • 《Python大数据处理库PySpark实战》

博主写博文就是方便对自己所学所做的事做一备份记录或回顾总结。欢迎留言,沟通学习。

刚开始接触,请多指教,欢迎留言交流!

相关文章:

12-pyspark的RDD算子注意事项总结

目录 相近算子异同总结相近变换算子异同foreach和foreachPartitionfold和reducecoalesce和repatition 相近动作算子异同cache和persist 算子注意事项需要注意的变换算子需要注意的动作算子 PySpark实战笔记系列第三篇 10-用PySpark建立第一个Spark RDD(PySpark实战笔记系列第…...

设备基础命令,路由基础

直连路由 静态路由 动态路由 根据路由器学习路由信息、生成并维护路由表的方法包括直连路由(Direct)、静态路由(Static)和动态路由(Dynamic)。直连路由:路由器接口所连接的子网的路由方式称为直连路由;非直连路由:通过路由协议从别的路由器…...

golang context

作用:用于在go协程中 传递上下文、超时、取消、传值 底层实现:是由互斥锁、channel、map来实现的 互斥锁:保护临界资源 channel: 用于信号通知,比如ctx.Done() map: 保存父ctx下派生的所有子ctx, 父ctx关闭,子ctx都关…...

GPT中的Transformer架构以及Transformer 中的注意力机制

目录 1 GPT中的Transformer架构 2 transformer中的注意力机制 参考文献: 看了两个比较好的视频,简单做了下笔记。 1 GPT中的Transformer架构 GPT是Generative Pre-trained Transformer单词的缩写,其中transformer是一种特定的神经网络&a…...

Hive的简单学习二

一Hive 库的基本操作 1.1 建库 1.默认路径是/user/hive/warehouse 例如 我输入命令 create database text1 则text1出现在 warehouse目录下 2.指定位置创建数据库 create database text2 location /bigdata29/bigdata29db 后面的路径是hdfs的路径 3.最终写法 加上if n…...

Qt事件处理机制3-事件函数的分发

Qt开发中,经常重写event函数和具体的事件处理函数,例如mousePressEvent、paintEvent等,那么这些具体的事件处理函数是怎样被调用的呢?答案是由继承自QObject的类中的event函数来处理事件分发。这里以间接继承自QWidget的派生类MyB…...

4月9号总结

java学习 一.steam流 1.介绍 Stream 是 Java 8 中引入的一种处理集合数据的新抽象。它提供了一种高效且便利的方式来处理集合中的元素,支持函数式编程的特性,使得集合操作变得更加简洁和灵活。 2.创建 List和Set可以直接调用接口的steam方法转换为流 …...

Linux生态系统:探索Linux的开源世界

Linux生态系统:探索Linux的开源世界 在前面的博客中,我们深入探讨了Linux的各种技能和技巧,从入门到进阶,再到高手级别。这一路走来,相信大家对Linux已经有了全面的认识和掌握。然而,Linux的魅力远不止于此。今天,我们将进一步探索Linux生态系统,了解Linux在开源世界中的重要地…...

XILINX 10G PCS PMA IP核使用

文章目录 一、设计框图二、模块设计三、IP核配置四、上板验证五、总结 一、设计框图 关于GT高速接口的设计一贯作风,万兆以太网同样如此,只不过这里将复位逻辑和时钟逻辑放到了同一个文件ten_gig_eth_pcs_pma_0_shared_clock_and_reset当中。如果是从第…...

Scrapy框架内存泄漏问题及解决

说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除 作者:zhu6201976 一、问题背景及原因 官方文档:Debugging memory leaks — Scrapy 2.11.1 documentation Scrapy是一款功能强大的网络爬虫框…...

app 创建快捷入口 在手机上面多个icon

activity-alias详解及应用-CSDN博客 Android动态修改应用图标最佳实践 - 简书 AndroidManifest.xml 中 <activity-aliasandroid:name"包名.ui.mine.SecondActivityAlias"android:label"快捷入口"android:icon"mipmap/collection_one"andro…...

【网安小白成长之路】6.pkachu、sql-lbas、upload-lbas靶场搭建

&#x1f42e;博主syst1m 带你 acquire knowledge&#xff01; ✨博客首页——syst1m的博客&#x1f498; &#x1f51e; 《网安小白成长之路(我要变成大佬&#x1f60e;&#xff01;&#xff01;)》真实小白学习历程&#xff0c;手把手带你一起从入门到入狱&#x1f6ad; &…...

vue 项目中添加DES加密

vue 项目中添加DES加密 由于现在项目使用http协议&#xff0c;且登录界面是明文传输&#xff0c;项目真正上线后基本的密码传输都很不安全。 决定用前端框架加密后再进行传输&#xff0c;以提高密码传输过程中的安全性。 crypto-js 是一个流行的 JavaScript 加密库&#xff0…...

【记录问题】如何测试虚拟机已经可以连接网络

如何测试虚拟机已经可以连接网络 要测试虚拟机是否已经连接网络&#xff0c;可以采取以下步骤&#xff1a; 检查虚拟网络编辑器 使用管理员权限打开虚拟网络编辑器&#xff0c;检查NAT方式下的虚拟子网网段。 确保虚拟机的网络设置与虚拟子网网段相匹配。检查虚拟机网络设置 …...

MySQL数据库的详解(1)

DDL&#xff08;数据库操作&#xff09; 查询 查询所有数据库&#xff1a;show databases;当前数据库&#xff1a;select database(); 创建 创建数据库&#xff1a;create database [ if not exists] 数据库名 ; 使用 使用数据库&#xff1a;use 数据库名 ; 删除 删除数…...

Python 网络爬虫技巧分享:优化 Selenium 滚动加载网易新闻策略

简介 网络爬虫在数据采集和信息获取方面发挥着重要作用&#xff0c;而滚动加载则是许多网站常用的页面加载方式之一。针对网易新闻这样采用滚动加载的网站&#xff0c;如何优化爬虫策略以提高效率和准确性是一个关键问题。本文将分享如何利用 Python 中的 Selenium 库优化滚动…...

Apache SeaTunnel 社区 3 月月报

各位热爱 SeaTunnel 的小伙伴们&#xff0c;SeaTunnel 社区 3 月月报来啦&#xff01;这里将记录 SeaTunnel 社区每个月的重要更新&#xff0c;并评选出月度之星&#xff0c;欢迎关注。 SeaTunnel 月度 Merge Stars 感谢以下小伙伴 3 月为 Apache SeaTunnel 做的精彩贡献&…...

ElasticSearch 的 ConstantScoreQuery 的理解

ConstantScoreQuery的定义&#xff1a; A query that wraps another query and simply returns a constant score equal to 1 for every document that matches the query. It therefore simply strips of all scores and always returns 1. 结合DisMaxQueryBuilder可以查找所…...

【RV1106的ISP使用记录之一】基础环境搭建

公司缺少ISP工程师&#xff0c;做为图像算法工程师的我这就不就给顶上来了么&#xff0c;也没给发两份工资&#xff0c;唉~ 先写个标题&#xff0c;占一个新坑&#xff0c;记录RK平台的传统ISP工作。 一、基础环境的硬件包括三部分&#xff1a; 1、相机环境&#xff0c;用于采…...

mars3d.MaterialType.Image2修改配置面状:图片2的speed数值实现动画效果说明

摘要&#xff1a; mars3d.MaterialType.Image2修改配置面状&#xff1a;图片2的speed数值实现动画效果说明 前提&#xff1a; 1.在示例中&#xff0c;尝试给mars3d.MaterialType.Image2材质的图片加上speed参数&#xff0c;实现动画效果&#xff0c;但是没有看到流动效果说明…...

遥感图像小目标检测实战:手把手教你用FFCA-YOLO复现TGRS 2024论文实验(附代码与环境配置)

遥感图像小目标检测实战&#xff1a;FFCA-YOLO从环境配置到结果复现全流程解析 当面对遥感图像中那些仅占3232像素的微小目标时&#xff0c;传统检测方法往往力不从心。FFCA-YOLO作为TGRS 2024的最新研究成果&#xff0c;通过特征增强模块(FEM)、特征融合模块(FFM)和空间上下文…...

FGSM对抗攻击实战:从理论到PyTorch代码的完整攻防演练

1. 对抗攻击入门&#xff1a;为什么你的AI模型会被"骗"&#xff1f; 想象一下&#xff0c;你训练了一个准确率高达99%的手写数字识别模型&#xff0c;但在实际应用中却发现它经常把"3"识别成"8"&#xff0c;把"6"识别成"0"。…...

Pixel Mind Decoder 前端交互设计:基于 JavaScript 的情绪看板开发

Pixel Mind Decoder 前端交互设计&#xff1a;基于 JavaScript 的情绪看板开发 1. 情绪看板的应用场景与价值 在现代数字化产品中&#xff0c;理解用户情绪变得越来越重要。无论是社交媒体监测、客服系统优化&#xff0c;还是心理健康应用开发&#xff0c;能够实时分析并可视…...

霜儿-汉服-造相Z-Turbo惊艳作品展:AI复原历史人物经典汉服造型

霜儿-汉服-造相Z-Turbo惊艳作品展&#xff1a;AI复原历史人物经典汉服造型 最近&#xff0c;一个名为“霜儿-汉服-造相Z-Turbo”的AI模型在圈子里悄悄火了起来。它干的事儿挺有意思&#xff1a;不是凭空创造新形象&#xff0c;而是试图“复原”那些活在文字、画作和历史记忆里…...

BERT 模型:自然语言处理的新篇章

BERT模型&#xff1a;自然语言处理的新篇章 在人工智能领域&#xff0c;自然语言处理&#xff08;NLP&#xff09;一直是研究的热点之一。2018年&#xff0c;谷歌推出的BERT模型彻底改变了NLP的发展方向&#xff0c;成为该领域的重要里程碑。BERT&#xff08;Bidirectional En…...

4个突破性功能步骤:全面兼容让Switch手柄实现跨平台操控自由

4个突破性功能步骤&#xff1a;全面兼容让Switch手柄实现跨平台操控自由 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcod…...

MATLAB伪彩色增强实战:从灰度分层到频域处理的完整指南

1. 伪彩色增强技术入门指南 第一次接触伪彩色增强是在研究生课题中&#xff0c;当时需要分析一批医学X光片。盯着那些灰蒙蒙的片子看了三天后&#xff0c;我突然意识到&#xff1a;人眼对色彩差异的敏感度&#xff0c;确实远超对灰度变化的感知。这就是伪彩色技术的核心价值——…...

手把手教你用AI手势识别镜像:上传图片秒出彩虹骨骼图

手把手教你用AI手势识别镜像&#xff1a;上传图片秒出彩虹骨骼图 1. 快速了解AI手势识别镜像 今天要介绍的是一个非常实用的AI工具——基于MediaPipe Hands模型的手势识别镜像。这个工具最大的特点就是简单易用&#xff0c;你只需要上传一张包含手部的图片&#xff0c;它就能…...

Qwen3-ForcedAligner-0.6B效果对比:较Whisper-v3在粤语场景提升12.7%准确率

Qwen3-ForcedAligner-0.6B效果对比&#xff1a;较Whisper-v3在粤语场景提升12.7%准确率 1. 引言&#xff1a;当语音识别遇上粤语&#xff0c;谁更懂你&#xff1f; 想象一下&#xff0c;你正在处理一段重要的粤语会议录音&#xff0c;需要把它转成文字并配上精确到每个字的时…...

【Spring 面试突击 · 03】大厂高频面试题:从IoC容器底层原理到Spring Boot自动配置解析

目录 一、Spring Boot如何启动Tomcat&#xff1f; 二、Spring Boot配置文件加载顺序 三、MyBatis的优缺点 四、Hibernate与MyBatis的区别 五、Spring Context模块的理解 六、什么是Spring依赖注入&#xff1f; 七、什么是Spring Bean&#xff1f; 八、Spring AOP与Aspec…...