大数据处理框架的核心理论

一、Spark逻辑处理流程

1、spark逻辑处理流程概览

一个典型的逻辑处理流程主要包含四个部分

  • 数据源:Data blocks

  • 数据模型:对输入、输出和中间数据进行抽象表示,使得程序能够识别处理。
    比MR的数据模型<k,v>record,更高层的抽象:RDD
    RDD只是一个逻辑概念,在内存中并不会为RDD分配存储空间(除非该RDD需要被缓存)。RDD中的数据只会在计算中产生,并且在计算完成后就会消失。
    RDD可以包含多个分区,不同分区可以由不同的任务(task)在不同节点进行处理。

  • 数据操作

操作类型描述
action()操作对数据结果产生后处理, 会产生数据结果;会触发spark提交job,真正执行数据处理任务
transform()操作数据操作是单向操作,不可变模型
  • 计算处理结果:根据是否需要汇集到driver进行计算划分为两类:需要driver汇总计算和直接落盘

2、Spark逻辑处理流程生成方法

2.1、根据应用程序如何产生RDD,产生什么样的RDD

spark RDD的个数以及类型与transform()的计算逻辑有关,如map生成的RDD个数与父RDD一致,而比如join和distinct需要对中间数据进行一系列操作,那么一个transform操作会生成多个RDD。

2.2、如何建立RDD之间的数据以来关系

窄依赖v.s.宽依赖:child RDD的各个分区是否完全依赖parent RDD的各个分区。

宽依赖即shuffle dependency,parent RDD分区中的一部分流入子Rdd的一个分区,另一部分流入另外分区。

RDD的内部数据如何分区?

常用的分区方法

  • 水平划分:按照record的索引进行划分,比如HDFS自动对输入数据进行水平划分,128M为单位的小数据块。
  • Hash划分:Shuffle
  • Range划分:排序

2.3、如何计算RDD中的数据

根据计算方式和控制流:

  • 一对一输出:map、filter等
  • 处理完一个分区中的数据再输出:mapPartitions等

3、常用transformation()操作

二、Spark物理执行计划

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值