菠菜源码下载与spark 基础(一)RDD

RDD resilient distributed dataset 菠菜源码下载Q2152876294 论坛:diguaym.com 弹性分布式数据集

在spark 中对数据的所有操作均可归类为:创建RDD,转化已有RDD,调用RDD操作求值。

每个RDD可以被分为多个分区,这些分区运行在集群的不同节点上,RDD可以包含python,scala,java等任意类型的对象。

创建RDD方法;

1 读取外部数据集 SparkContext.textFile

2 在驱动程序中分发驱动程序中的对象集合

RDD支持两种操作:

1转化操作 transformation 由一个RDD生成新的RDD

2行动操作action 对RDD计算出一个结果,并将结果返回到驱动器程序中,或存放到外部存储系统(HDFS)

只在首次调用一个行动操作时才会真正计算;

每次进行行动操作时RDD会重新计算,如果想要重复使用一个RDD,则需要用RDD.persist()缓存到内存或者磁盘上,实际操作中经常会将数据的一部分读取到内存中,反复查询。

二 创建RDD

程序中已有的集合传给sparkcontext sc.parralelize()

读取外部数据 sc.textFile()

三 RDD操作

转化操作 从一个RDD生成另一个RDD

spark会使用谱系图记录RDD间的依赖关系

行动操作 对RDD 操作得出结果反馈给驱动程序或者输出 collect 会把RDD的数据存放在本地内存中,写到HDFS或S3 saveAsTextFile() saveAsSequenceFile()

四 向Spark传递函数

转化操作和行动操作依赖于用户传递的函数计算 python scala 和Java均可实现,前两者支持匿名函数

Function<T,R> 实现方法 R call (T)

Function2<T1,T2,R> 实现方法 R call (T1,T2)

FlatMapFunction<T,R> 实现方法 Iterable<R> call (T)

五 常见的转化操作和行动操作

针对各个元素的转化操作 map(),filter()

对每个元素生成多个输出元素 flatmap()返回值序列的迭代器

猜你喜欢

转载自blog.51cto.com/13942787/2165216