走进Spark生态圈:RDD及其相关操作

来源:互联网 发布:ezbuy和淘宝什么关系 编辑:程序博客网 时间:2024/05/30 13:42

概念

RDD(Resilient Distributed Datasets): 分布式弹性数据集,是Spark中最基本的数据抽象,不可变(只读),可分区,可以运行在分布式集群上,Spark中的所有的操作都是以RRD进行的,主要分为两种类型的操作:转化操作和执行操作

分区(Partitions): RDD实际存储的是数据集合的一组分区,由于有分区的存在才可以让数据集运行在分布式集群上,一个分区只能运行在一个Worker上面,但是一个Worker却可以运行在多个分区上面

转化操作(Transformations): 将RDD转化为另一种形式的RDD,只是将转化操作记录在数据集上,并不立即执行的懒加载操作,当触发执行操作的时候才执行

执行操作(Actions):计算RDD经过一系列操作后的结果

以走进Spark生态圈:运行程序在Spark集群中WordCount为例展示应用在RDD上的操作类型

val result = sc.textFile("application/files/greeting.txt") /*创建RDD*/               .flatMap(_.split(" ")) /*转化RDD*/               .map((_,1))/*转化RDD*/               .reduceByKey(_+_)/*执行RDD*/               .saveAsTextFile ( "applications/files/out/wordcount")/*执行操作*/

当执行转化操作的时候并没有立即看到结果,为了立即看到结果需要执行执行操作,上节中我们使用collect方法查看结果

RDD常用操作

以下操作均已sc代替SparkContext对象

创建RDD

  • 从外部数据集加载RDD :sc.textFile() sc.sequenceFile() sc.objectFile

  • 从Scala数据集中加载RDD:sc.parallelize()

转化RDD操作(Transformations)

这里写图片描述

执行RDD操作(Actions)

这里写图片描述

更多RDD操作

请参考:
http://spark.apache.org/docs/latest/rdd-programming-guide.html#rdd-operations
http://homepage.cs.latrobe.edu.au/zhe/ZhenHeSparkRDDAPIExamples.html

原创粉丝点击