β

【spark】spark示例解说

胡户主—《江南360》 266 阅读
刚开始使用SPARK的同学都会因为文档说明简单无示例而导致前期开发效率较低,在网上有一位老师的博客给出了很详细的使用示例,我简单将其翻译成中文,自己顺便也熟悉一下没使用过的API。 E文版 一些注解: 数据分片(partitions):执行在计算节点中的一份数据集合,包含多个数据单元 以下为翻译内容: RDD的API示例 RDD是弹性分布式数据集的简称,RDDs在Spark系统扮演干活的角色。当我们使用的时候,可以认为RDD是一个独立的数据分片集合,这些数据可以是计算后的数据结果。但是RDD实际上远不止这些,在集群中,独立的数据分片可以分布在不同的运算节点中。RDD是访问这些数据的入口,同时也能在这些数据上做运算和数据变换。不论RDD的数据丢失了或者部分丢失了,系统都能够通过lineage信息来恢复数据。Lineage是产生当前RDD的数据变化操作序列。总的来说,Spark可以从大部分的错误中恢复。 Spark中可以用的RDDs都是间接或者直接继承至RDD类。这个类包含很多处理数据分片的方法。RDD类是抽象类,平时大家用的都是RDD的继承实现类。继承类都需要实现一些核心方法,才能被外部使用。 Spark变成一个流行的大数据处理系统的原因是它没有对RDD分片中的数据增加限制。RDD API中包含了很多非常有用的方法。但是创作者为了保证核心API适配于所有的数据类型,所以有一些方便的方法并没有加到里面。 基础的RDD API将每个数据单元稻城单独的一个输入值。但是,使用者很多时候希望输入的是一个kV对,因此Spark提供了扩展的RDD类PairRDDFunctions。现在有四个RDD API扩展类。它们是: DoubleRDDFunctions 这个扩展类包含了很多数值的聚合方法。如果RDD的数据单元能够隐式变换成Scala的double数据类型,这些方法会非常有用 PairRDDFunctions 该扩展类中的方法输入的数据单元是一个包含两个元素的tuple结构。Spark会把其中第一个元素当成key,第二个当成value。 OrderedRDDFunctions 该扩展类的方法需要输入数据是2元tuple,并且key能够排序。 SequenceFileRDDFunctions 这个扩展类包含一些可以创建Hadoop sequence文件的方法。输入数据必须是2元tuple。但需要额外考虑tuple元素能够转换成可写类型。 下面会按照字母顺序列出RDD方法,以下简称会在相应的API后面,说明该API属于哪个扩展类。 [Double] - DoubleRDDFunctions [Ordered] - OrderedRDDFunctions [Pair] - PairRDDFunctions [SeqFile] - SequenceFileRDDFunctions aggregate aggregate方法是一个高度定制化的RDD聚合和reduction方法,但是由于Scala和Spark在数据处理上的方式的原因,我们应该在真正使用的时候多加注意。下面是我们在使用中所观察到的要点: reduce和combine方法是可代替的并且相互关联的 如方法定义中所述,combiner的输出必须是和输入类型一致,因为Spark是链式执行 zeroValue是U的初始值,作为seqOp和combOp执行之前的首个输入元素。你可以随着自己的需求改变它,但是为了代码执行结果的一致性,无论数据被分成多少份,每份有多大,都要保证产生同样的结果。 不要假设每个数据分片的执行顺序。 在每个数据分片上执行reduce之前,会设置一个zeroValue作为第一个输入,在执行combiner方法之前也会降zeroValue作为第一个输入。 为什么会有两个数据合并的输入函数?第一个函数将输入值映射到结果空间,输入值T可以和结果空间的值U不是一个类型,第二个函数将第一个函数映射后的结果再合并起来。 为什么有人需要输入两种数据类型的数据?此处举出一个示例,假设我们现在在考古遗址的现场,并且通过金属探测器找到重要的位置,并把位置的坐标记录下来。这样我们就可以通过聚合函数聚合这些标志出的坐标并画在地图上。我们可以设置zeroValue为一个空的地图。GPS坐标被存储在多个数据分片中,seqOp可以将GPS坐标转化为地图坐标,并标注在zeroValue表示的地图上。combOp将这些标注在地图上的数据以及每个数据分片所代表的地图合并成一张完整的地图。 定义 def aggregate[U: ClassTag](zeroValue: U)(seqOp: (U, T) => U, combOp: (U, ...

Continue reading ‘【spark】spark示例解说’ »

作者:胡户主—《江南360》
原文地址:【spark】spark示例解说, 感谢原作者分享。

发表评论