Spark之RDD理解(分区策略)

本文介绍了Spark中的RDD,它是弹性分布式数据集,是Spark的基本数据抽象。文章讲解了RDD的创建,包括从集合和外部存储创建,以及如何通过算子进行操作。重点讨论了RDD的分区规则,包括默认分区策略和自定义分区数的情况,分析了从集合和文件中创建RDD时分区的计算逻辑。
摘要由CSDN通过智能技术生成

RDD理解

首先在理解RDD之前,我们要知道Spark的运行流程,大致分为Standalone模式和跑在其它调度器上,如yarn和Mesos,而最常见的就是跑在yarn上,跑在yarn上还分为Client和Cluster两种模式。
区别在于:
Client模式的Driver跑在了当前本地机器上而不是集群上,当本地机器与集群机器所在地距离远时会受到网速影响较大,输出结果和运行日志直接输出到控制台上,开发中适合做调试用
Cluster模式Driver跑在集群上,当本地机器与集群机器所在地距离远时会受到网速影响较小,开发中适合用于生产环境
这里以yarn模式的Cluster Master提交方法为例
在这里插入图片描述
这是提交一个Spark任务的主要流程,而RDD及存在于Executor中
在这里插入图片描述
这里直接的表达了wordcount案列中每个RDD起到的作用,所以其实可以将RDD看作一个一个流水线上的加工点。
让我们来看下RDD比较官方的解释:
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象。
代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。
其实就可以将他看作流水线上的每个加工点,RDD它是不储存数据的,数据像水流一样从RDD经过,只做加工。而每个RDD的算子其实就是这个RDD的运行逻辑,在流水线思想中,可以将算子视为这个加工点做的工作是什么。我们通过不同的RDD和RDD中的算子逻辑可以完成对数据的一系列逻辑运算
这里要注意一个问题是,RDD再创建好后不会直接运算,也就是流水线即使有了,也需要一个开始,Executor来说,行动算子就是RDD流水线开始的号角,这个后续讲算子再详细解释,反正要明白,前面的转换算子的RDD是不会执行的,直到遇到行动算子如collect()之后才会开始RDD流水线

RD

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值