sx是什么意思 shuffle什么意思

特别介绍
Spark于2009年诞生于加州大学伯克利分校的AMP实验室(算法、机器与人实验室),2010年开放 。2013年,Spark向Apache软件基金会捐款 , 2014年,Spark成为Apache顶级项目 。
如今,十年过去了 , Spark已经成为大大小小的企业和研究机构的常用工具之一,依然受到众多开发者的喜爱 。如果你初入江湖,想了解和学习Spark的“小虾米”,那么InfoQ与飞轮技术专家Leo合作的《Spark:原理详解与开发实践》系列文章一定会适合你!
本文是特别系列的第二篇 。
继上一本书之后,在最后一章《内存计算的起源——RDD》中,我们从“虚”和“实”两个方面介绍了RDD的基本结构 。d是依赖关系和计算属性端到端连接形成的计算路径,技术上称为lineage-lineage , 也称为DAG(有向无环图) 。为什么一个概念有两个名字?这两个不同的名字有什么区别和联系?简单来说,血统和DAG从两个不同的角度描述了同一件事 。谱系,着重从数据角度描述不同RDD的依赖性;DAG从计算的角度描述了不同RDD之间的转换逻辑 。如果说RDD是Spark对分布式数据模型的抽象,那么相应地DAG就是Spark对分布式计算模型的抽象 。
顾名思义,DAG是一种“图” 。图计算模型的应用有着悠久的历史,早在上个世纪就被应用于图形数据库的实现 。任何图都包含两个基本元素:一个节点(顶点)和一条边(边) 。节点通常用于表示实体,而边表示实体之间的关系 。比如《倚天屠龙记》社交网络的好友关系中,每个节点代表一个特定的人,每条边意味着两端的实体之间已经建立了好友关系 。
田义·龙图社交网络
上面的社交网络中,朋友是相互的,比如张无忌和周芷若是彼此的朋友 , 所以图中的边是没有方向性的;另外,细心的同学可能已经发现,上面的图结构中还有“环”,比如张无忌、谢逊、白眉鹰王组成的关系环,张无忌、谢逊、紫衫龙王、小昭之间的关系环 , 等等 。像上面这样的图结构叫做“无向循环图” 。没有比较,就没有歧视 。有向无环图(DAG)自然是一种具有方向性,没有“环”结构的图模型 。还记得土豆工坊的例子吗?
马铃薯车间山
在上面的土豆加工DAG中 , 每一个节点都是一个RDD,每一条边都代表了不同rdd之间的父子关系——父子关系天然是单向的,所以整个画面是有方向的 。此外,我们注意到在整个图形中没有环形结构 。像这样的土豆加工线可以说是最简单的有向无环图 。每个节点的Indegree(指向自己的边)和Outdegree(从自己开始的边)都是1,整个图只有一个分支 。
但工业应用中的Spark DAG要比这复杂得多 , 往往是由不同的RDD通过关联和分裂生成的具有多个分支的有向无环图 。为了说明这一点,我们以土豆工坊为例 。将“原味”薯片投放市场一段时间后,作坊老板发现季度销量骤降,老板急得不知所措 。这时有人向他建议:“为什么不推出更多口味的薯片来满足大众多样化的选择”,于是老板命令工人对流水线做如下改动 。
马铃薯车间先进生产线
与以前的工艺相比,新工艺增加了三条调味线 , 用于分配不同的调味粉 。新流水线中的辣椒粉配送到收集小薯片的流水线,孜然粉配送到中薯片流水线,番茄粉对应配送到大薯片流水线 。改造后的土豆车间现在可以生产三种口味不同大小的薯片 , 分别是麻辣口味的小薯片、孜然口味的中薯片和番茄口味的大薯片 。如果我们用flavoursRDD抽象调味品,那么新车间作业流程对应的DAG就会演化成有向无环图 , 有两个分支,如下图所示 。
多分支DAG
在上一篇文章中,我们讨论了星火核心内心法的第一精髓——RDD 。在本文中 , 我们来谈谈内心法的第二个秘密——Dag 。
RDD算子Dag的边缘在上一章《内存计算的起源RDDs》的最后,我们以WordCount为例,展示了不同RDD之间转换形成的DAG计算图 。通读代码 , 从开发的角度,我们发现DAG的关键是RDD算子调用 。不同于Hadoop MapReduce , Spark提供了丰富的RDD算子供开发者灵活排列组合,从而实现多样化的数据处理逻辑 。那么问题来了,Spark提供了哪些算子?
来源:https://spark . Apache . org/docs/latest/rdd-programming-guide . html 。
从表中可以看出,Spark的RDD算子是如此的丰富,让人眼花缭乱 。对于刚接触Spark的同学来说,如果不稍微分类的话,真的是无法上手众多的操作人员 。Apache Spark官网将RDD算子分为变换和动作,这也是各种Spark技术博客中常用的分类方法 。为了解释转换和操作运算符之间的本质区别 , 我们必须提到Spark计算模型的惰性计算(也称为延迟计算)特征 。

推荐阅读