Spark RDD 方法实现等底层原理

Spark读取数据分几个区

所有block块最多是128M大小

exam: 两个文件一个 100bit 一个124bit
会计算所有block块字节数总和 除以最小分区数(默认为2) 得到goalsize 224/2=112

如果有文件块大于 goalsize的1.1倍 124/112=1.107 > 1.1
则将这个大文件分为两个区

0~112
112~124

如果想要按文件数量分区 则设置最小分区数为1 则没有文件数可以超过goalsize 就不用拆分了

mapPartitions map MapPartitionsRdd MapPartitionsWithIndex

mapPartitions 对迭代器操作

map对迭代器的数据操作

mapPartitionsRdd 对迭代器操作 map底层实现原理

mapPartitionswithIndex 可以加上分区编号

如果map方法里面有一个链接 用mapPartitions更好 用map每次都要建立连接 后者只需一次

reducedByKey

下游分区数量默认和上游一致
key为null的都分到0区
如果null值太多 会发生数据倾斜,过滤一下处理一下

自己实现底层代码的方法(方法为private的情况下)

1 把包名改成他限定的包

2 在方法不依赖其他类的情况下,把代码复制到自己的类下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark Core是Apache Spark的核心组件,它负责任务调度、内存管理、错误恢复和与存储系统的交互等底层功能。下面是Spark Core的一些底层原理: 1. 弹性分布式数据集(RDD):RDDSpark Core的核心抽象,它代表了一个可并行操作的分布式数据集。RDD可以从外部存储系统(如HDFS、HBase等)中创建,也可以通过对其他RDD进行转换操作得到。RDD具有容错性,可以在节点故障时自动恢复。 2. 任务调度:Spark Core使用DAG调度器来将用户程序转换为一系列阶段(stage),并将这些阶段划分为任务(task)进行执行。DAG调度器根据RDD之间的依赖关系构建有向无环图(DAG),并根据数据本地性和任务优先级等因素进行任务调度。 3. 内存管理:Spark Core使用分布式内存管理器来管理集群中的内存资源。它将内存划分为多个区域,包括用于缓存RDD数据的存储区域和用于执行任务的执行区域。内存管理器根据任务的需求和可用内存进行动态分配和回收。 4. 错误恢复:Spark Core通过记录RDD的转换操作和依赖关系来实现容错性。当节点发生故障时,Spark Core可以根据这些信息重新计算丢失的数据,并继续执行未完成的任务,从而实现错误恢复。 5. 存储系统交互:Spark Core可以与多种存储系统进行交互,包括HDFS、HBase、S3等。它提供了统一的API,使得用户可以方便地读取和写入不同的存储系统中的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值