大数据技术Spark之RDD基础编程

一、RDD编程相关的就是Spark Core内容,spark的数据抽象就是RDD

 

二、创建RDD(两种方法)

1、从文件系统中加载数据

SparkContext通过textfile()读取数据生成,数据源可以是本地,hdfs,云端

a、从本地数据集

 

b、从hdfs生成

 

2、通过并行集合(数组)

调用SparkContext对象的Parallelize方法

 

 

 

 三、RDD操作包括两种:转换操作,行动操作

转换操作不会对RDD进行计算,只是记录下来,等到行动操作才会进行计算。

常用的转换操作包括:filter,map,flatmap,groupByKey,reduceByKey

 

1、filter

2、map

 

 3、flatmap

 

 4、groupkey

 

 

5、reduceByKey

 

 

 

 行动操作

只有遇到动作才会去加载

 

 

 

 四、持久化

允许用户手动操作把一些反复使用的数据集保存在内存之中,避免一直取

 

 改进:

 

 在调用cache()/persist()的时候不会把rdd放到缓存之中,当涉及到动作操作才会触发执行,把rdd放到缓存之中。

rdd.cache()等价于rdd.persist(MEMORY_ONLY)(只把东西缓存在内存之中,如果超过了限制,新的会覆盖掉之前的)

rdd.persist(MEMORY_AND_DISK)如果存不下了会把多余的放在硬盘上。 

 

 五、分区

作用:1、增加并行度

   2、减少通信开销

分区的个数尽量等于cpu的核数

spark中有spark.default.parallelism

本地模式默认是cpu数量,如果设置了local[n]则为N个,Apache Mesos模式默认是8个。

Yarn模式会把“集群中所有CPU核心数目总和”和“2”之间取大的。

1、设置分区个数:

 

 

 

 2、重新分区

利用reparitition

 

 3、自定义分区(默认可以是哈希分区)

 

 

6、综合例子

 

 

 

  

 

 

 

 

 

 

posted @ 2021-03-30 20:00  dalege  阅读(343)  评论(0编辑  收藏  举报