`
greemranqq
  • 浏览: 966268 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

spark shuffer介绍,和操作

阅读更多

一.序言

     简单copy下来的,记录一下,翻译有问题 请指出。

 

Shuffle operations

<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
Certain operations within Spark trigger an event known as the shuffle. The shuffle is Spark’s mechanism for re-distributing data so that it’s grouped differently across partitions. This typically involves copying data across executors and machines, making the shuffle a complex and costly operation.
 
操作 spark 触发的事件里面,包含shuffleshuffle是spark 通过跨分区操作来新打乱数据的一种方式。
通常会包含 executors和machines  之间拷贝数据,导致shuffle是一件非常昂贵的操作。
 
 
Background
To understand what happens during the shuffle we can consider the example of the reduceByKey operation. The reduceByKey operation generates a new RDD where all values for a single key are combined into a tuple - the key and the result of executing a reduce function against all values associated with that key. The challenge is that not all values for a single key necessarily reside on the same partition, or even the same machine, but they must be co-located to compute the result.
 
要了解shuffle 过程中发生了什么,我们可以参考reduceByKey 的例子。reduceByKey 操作会产生一个新的RDD,并且按key 进行合并到一个tuple(类似:map), 按key 执行reduce函数能得到执行结果。面临的挑战是不是所有的key 都分布在同一个分区,甚至同一台机器。但是他们必须合并才能得到结果。
 
In Spark, data is generally not distributed across partitions to be in the necessary place for a specific operation. During computations, a single task will operate on a single partition - thus, to organize all the data for a single reduceByKey reduce task to execute, Spark needs to perform an all-to-all operation. It must read from all partitions to find all the values for all keys, and then bring together values across partitions to compute the final result for each key - this is called the shuffle.
 
在spark里面,数据通常都不跨分区,在一个必要的地方执行具体的操作。在计算期间,一个单一的任务将在单一的分区上操作,因此整理的数据都会在一个 reduceByKey reduce 任务执行。spark 需要去执行所有的这些操作。它必须从所有的分区找到所有的keys,然后汇集这些数据根据每个key进行合并,得到最终结果。这就是shuffle。
 

Although the set of elements in each partition of newly shuffled data will be deterministic, and so is the ordering of partitions themselves, the ordering of these elements is not. If one desires predictably ordered data following shuffle then it’s possible to use:

  • mapPartitions to sort each partition using, for example, .sorted
  • repartitionAndSortWithinPartitions to efficiently sort partitions while simultaneously repartitioning
  • sortBy to make a globally ordered RDD
 
尽管shuffled之后每个新的分区的元素在都是确定的,但是这些元素本身是没有顺序的,如果需要获得排序后的shuffle数据,可以使用:
mapPartitions:每个分区使用排序,例如.sorted
repartitionAndSortWithinPartitions:从新分区的时候排序
sortBy to make a globally ordered RDD:做一个全局排序的RDD
 
Operations which can cause a shuffle include repartition operations like repartition and coalesce‘ByKey operations (except for counting) likegroupByKey and reduceByKey, and join operations like cogroup and join.
 
 
会导致shuffle操作的分区操作有 repartition and coalesce, “ByKey” 的操作如:groupByKey and reduceByKey, 和 join 操作 如: cogroup and join.
 
 
0
0
分享到:
评论

相关推荐

    spark-2.2.0-yarn-shuffle.jar

    spark-2.2.0-yarn-shuffle.jar

    MapTask阶段shuffle源码分析

    今天小编就为大家分享一篇关于MapTask阶段shuffle源码分析,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    浅谈Keras中shuffle和validation_split的顺序

    模型的fit函数有两个参数,shuffle用于将数据打乱,validation_split用于在没有提供验证集的时候,按一定比例从训练集中取出一部分作为验证集 这里有个陷阱是,程序是先执行validation_split,再执行shuffle的,所以...

    后端开发是一个涉及广泛技术和工具的领域.docx

    后端开发是一个涉及广泛技术和工具的领域,这些资源对于构建健壮、可扩展和高效的Web应用程序至关重要。以下是对后端开发资源的简要介绍: 首先,掌握一门或多门编程语言是后端开发的基础。Java、Python和Node.js是其中最受欢迎的几种。Java以其跨平台性和丰富的库而著名,Python则因其简洁的语法和广泛的应用领域而备受欢迎。Node.js则通过其基于JavaScript的单线程异步I/O模型,为Web开发提供了高性能的解决方案。 其次,数据库技术是后端开发中不可或缺的一部分。关系型数据库(如MySQL、PostgreSQL)和非关系型数据库(如MongoDB、Redis)各有其特点和应用场景。关系型数据库适合存储结构化数据,而非关系型数据库则更适合处理大量非结构化数据。 此外,Web开发框架也是后端开发的重要资源。例如,Express是一个基于Node.js的Web应用开发框架,它提供了丰富的API和中间件支持,使得开发人员能够快速地构建Web应用程序。Django则是一个用Python编写的Web应用框架,它采用了MVC的软件设计模式,使得代码结构更加清晰和易于维护。

    华为数字化转型实践28个精华问答glkm.pptx

    华为数字化转型实践28个精华问答glkm.pptx

    新员工入职培训全流程资料包gl.zip

    新员工入职培训全流程资料包(100+个文件) 1入职流程指引 万科新职员入职通知书 万科新职员入职引导手册 新进员工跟进管理表 新员工入职报到工作单(文职) 新员工入职报到流程 新员工入职流程表 新员工入职手续办理流程(工厂 新员工入职手续清单 新员工入职须知 新员工入职训流程 新员工入职引导表(导师用) 2 入职工具表格 3 培训方案计划 4培训管理流程 5培训教材课件 6 培训效果检测 7 员工管理制度 8 劳动合同协议 9 新员工培训PPT模板(28套)

    三菱PLC通讯程序实例

    FX5U PLC作为主、从站的通讯方式程序实例,以及包含详细说明文件...

    技术需求报告-集行波测距与故障录波功能于一体的电网综合故障分析系统.docx

    技术需求报告-集行波测距与故障录波功能于一体的电网综合故障分析系统.docx

    最新二开版本源码博客论坛源码,UI很漂亮,可切换皮肤界面.rar

    最新二开版本源码博客论坛源码,UI很漂亮,可切换皮肤界面.rar最新二开版本源码博客论坛源码,UI很漂亮,可切换皮肤界面.rar

    2024-2030全球及中国广谱防晒霜行业研究及十五五规划分析报告.docx

    2024-2030全球及中国广谱防晒霜行业研究及十五五规划分析报告

    基于Qt Creator实现中国象棋人机对战, c++实现.zip

    基于Qt Creator实现中国象棋人机对战, c++实现.zip

    华为用“三阶段十二步”法保证业务战略引领数字化转型glkx.pptx

    华为用“三阶段十二步”法保证业务战略引领数字化转型glkx.pptx

    基于matlab实现自适应稳健波束形成对角加载算法,其与输入信噪比的关系.rar

    基于matlab实现自适应稳健波束形成对角加载算法,其与输入信噪比的关系.rar

    热塑性弹性体,全球前21强生产商排名及市场份额.docx

    热塑性弹性体,全球前21强生产商排名及市场份额

    基于python+django网易新闻+评论的舆情热点分析平台(源码+论文+演示视频)

    详见:https://blog.csdn.net/Timi2019/article/details/138357258 【项目技术】 python+Django+mysql 【实现功能】 网站前台: (1)用户可以在不登录的情况下访问本系统,但是不能进行数据的分析,也不能对自己的个人信息进行修改。 (2)用户的注册与登录:游客想要在一个网站对自己的信息进行修改的话,需要经过一系列的有验证信息的注册,成为网站的正式用户后,可以编辑或修改自己的个人信息。 (3)评论分析:用户可以在网站内对所有的评论进行查看和分析。 (4)个人信息:通过个人信息查看功能可以查看自己的个人信息,还可以对密码进行修改。 (5)系统简介:用户可以在网站的首页上查看系统的信息,如用户数量、新闻数量、评价数量等信息。 网站后台: (6)用户信息管理:管理员可以查看和维护网站内所有的用户信息,可以通过用户的编号或者用户名进行查找,查找到具体的用户后可以对用户的信息进行修改,也可以直接删除用户的信息。 (7)新闻管理模块:后台管理员可以对网站内的新闻信息进行管理

    某知名大型集团信息化项目建设方案qy.pptx

    某知名大型集团信息化项目建设方案qy.pptx

    基于matlab实现潮流计算程序,MATLAB潮流计算程序.rar

    基于matlab实现潮流计算程序,MATLAB潮流计算程序.rar

    Python开发数据分析和机器学习平台源码

    搭建数据分析和机器学习平台,实现如下功能:设计一个网页版的用户界面,支持从本地选取数据集、自动可视化分析、查看训练记录、查看训练模型参数和绘图和支持完成机器学习任务。核心工具:streamlit和pycaret,部署和运行方便,只需streamlit run main.py命令即可。

    一种统一的单隐层的前馈网络(SLFNs)的在线序列学习算法-前馈网络、ELM、OS-ELM

    一种统一的单隐层的前馈网络(SLFNs)的在线序列学习算法。该算法被称为在线序极端学习机器(OS-ELM),可以学习固定或不同块大小的逐块或逐块数据)。OS-ELM中加性节点的激活函数可以是任意有界的不变分段连续函数,RBF节点的激活函数可以是任意可积的分段连续函数。在OS-ELM中,随机选择隐藏节点的参数(加性节点的输入权值和偏差或RBF节点的中心和影响因子),并根据顺序到达的数据解析确定输出权值。该算法采用了Huang等人开发的批处理学习的思想,该思想已被证明比其他批处理训练方法非常快。除了选择隐藏节点的数量外,还不需要手动选择其他控制参数。

    仿我图网素材购买素材下载素材交易平台网站源码.rar

    仿我图网素材购买素材下载素材交易平台网站源码.rar仿我图网素材购买素材下载素材交易平台网站源码.rar

Global site tag (gtag.js) - Google Analytics