1. 掌握 Spark RDD 编程——aboutyun

 

1.1 什么是 RDD?

RDD(Resilient Distributed Datasets):一个弹性分布式数据集, Spark中的基本抽象。(既可以放内存中也可以放磁盘中

代表一个不变(只读)的、可以并行操作的元素的分区集合。

Spark中原生的RDD支持从以下三种方式创建:从scala集合中创建、从文件系统中创建、现有RDD的transform操作创建

1.1 RDD 特点有哪些?

1)分区集合:RDD是一个分区(partition)的集合,一个RDD有一个或多个分区。分区的数量决定了并行度

2)计算函数以分区为单位:RDD在任务计算时是以分区为单位的,计算函数为compute函数。

3)RDD依赖于其他RDD:每个RDD都有依赖关系(源RDD的依赖关系为空),这些依赖关系成为lineage,可以通过toDebugString方法来获得lineage。

4)key-value 类型RDD的 Partitioner:对于非key-value类型的RDD,Partitioner为None,对于key-value类型的RDD,Partitioner默认为HashPartitioner。在进行shuffle操作时,如reduceByKey,sortByKey,Partitioner决定了父RDD shuffle的输出时对应的分区中的数据是如何进行map的。

5)分区支持数据本地性:Spark在进行任务调度时,会尝试将任务分配到数据所在的机器上,从而避免了机器间的数据传输。RDD获取优先位置的方法为getPreferredLocations。

1.2 RDD Transform & Action

Transform:

Transform 直译为“转换”,它表示一个 RDD 通过 transform 后,返回为一个新的 RDD
例如:map、filter、flatMap、union、reduceByKey 等等

Action:

Action 直译为“行动”,它表示一个 RDD 通过 action 后,返回 一个数值,一组数值或者 Unit
例如:reduce、count、saveAsTextFile、foreach 等等

1.3 lazy(惰性)执行

RDD 在进行 transform 操作时,并不会进行计算,只会记录 RDD 之间的转换关系只有在进行 action 操作时,操作真正出发计算任务开始计算

1.4 RDD cache/persist

RDD 允许缓存/持久化到内存或硬盘中,以便于重用。可以通过 cache 方法或是 persist 方法来缓存。

cache 方法无法指定缓存级别,只能缓存到内存中。persist 方法可以指定缓存级别,可以缓存到内存、硬盘或者两者都有。

 

1.5 先创建完文件,才可以进行这步的练习。可以看。关于HDFS的练习

  

  1、

  

   其textFile通过外部文件生成一个Rdd,是一个transform的操作。

    

  

  生产中Rdd内容很大的情况下不可用collect。否则会出问题。会将内存搞崩。

   其first 或者 collect 这些命令的执行,都是属于action操作。

2、

 

3、将文件拆成一个个单词。用flatMap()方法

 

  对于生产出来的words 这个Rdd,也是属于MapPartitionsRDD[2]这个Rdd。

 flatMap是一个transform的操作,因为没有进行计算,只是一个转换关系。

 

4、 再次查看words里面的内容

 

5、变成单词后,可以进行计数。计数前,需要调用map的一个操作。

 

 

6、现在可以对其键值对进行计数(reduceByKey也是一个transform操作)

 

 

在学习中,要先把Spark集群启动。先将用hdfs dfs -ls / 查看目录。(先启动start-master.sh start-slaves.sh)

 

2. 掌握 Spark DataSet/DataFrame/SQL 编程

3. 掌握 Spark Streaming 编程

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值