走进Spark生态圈:RDD及其相关操作
程序员文章站
2022-06-01 21:11:29
...
概念
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
推荐阅读