spark 基础(一)RDD

RDD resilient distributed dataset  弹性分布式数据集

在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()返回值序列的迭代器

伪集合操作 将RDD看做时元素的集合

 distinct(),union(),intersection(),subtract(),笛卡尔积 catesian()

行动操作 reduce() 返回类型与RDD元素类型一样 aggregate()可以不一致。collect() 返回驱动器数据

 

不同RDD类型间进行转换,在Java中有专门的类,要构建特殊类型的RDD 比如JavaDoubleRDD,JavaPairRDD,需要特殊的function类

在python中所有函数都实现在基本的RDD类中

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值