Spark01:RDD概述

1.1 背景

  • 计算机普及和移动互联网导致数据量爆发式增长

  • 当前的集群存在一些挑战

    • 并行化处理
    • 集群的容错-节点故障和慢节点问题
    • 多用户共享-动态扩展和缩减计算资源
  • 相应的解决方法(编程模式)

    • MapReduce编程模式
    • Storm流式处理系统
    • Impala交互式SQL查询系统
    • Bulk Synchronous Parallel(BSP)并行迭代图计算模型

    上述几个编程模型需要高效的数据共享;交互数据挖掘需要对同一数据子集进行多个特定的查询;流式应用则需要随时间对状态进行维护和共享。但是上述框架缺乏针对数据共享的高效元语。

    • Spark

      • 设计了统一的编程抽象——弹性分布式数据集(RDD),用户直接控制数据的共享;
      • 支持迭代、批处理、流式处理和交互式;
      • 以很小的代价提供节点故障和慢节点容错处理功能;
      • 更为快速的计算能力;
      • 适合多用户管理,允许应用程序弹性地扩展和缩减计算资源。

1.2 RDD简介

Spark编程模型地核心是弹性分布式数据集(Resilient Distributed Dataset,RDD),是MapReduce模型的扩展、延申和改进,解决了MR的缺陷:在并行阶段高效的数据共享,并将MR的操作方式进行关键的优化。

MR等模型也能够将计算转换为一个有向无环图(DAG)的任务集合,这是故障和慢节点问题的关键解决办法,但这些模型除了文件系统外没有其他的存储方式,导致频繁的网络IO。

RDD提供一种基于粗粒度变换(如map\filter)的接口,该接口将相同的操作应用到多个数据集,可以记录创建数据集的"血统"(Lineage),不需要存储真正的数据,从而达到高效的容错性。基于RDD机制实现了多类模型计算:

  • 迭代计算

    图处理、数值优化、机器学习算法

  • 交互式SQL查询

    Spark SQL提供可观的性能、完善的容错机制

  • MapReduceRDD

    提供MR的超集,DAG数据流

  • 流式数据处理

1.3 RDD的类型

Spark中RDD的操作主要有创建操作、转换操作、控制操作和行为操作

  • 创建操作:用于RDD的创建。RDD的创建有两种方法,一种是来自于内存集合和外部存储系统,另一种是通过转换操作生成的RDD。
  • 转换操作(Transformation Operation):将RDD通过一定的操作变成新的RDD,比如HadoopRDD可以使用map操作变换为MapperdRDD,RDD的转换操作是惰性操作,它只是定义了一个新的RDDs,并没有立即执行。
  • 控制操作(Control Operation):进行RDD持久化,可以让RDD按不同的存储策略保存在磁盘或者内存中,比如cache接口默认将RDD缓存在内存中。
  • 行动操作(Action Operation):能够触发Spark运行的操作,例如,对RDD进行collect就是行动操作。Spark中行动操作分为两类,一类的操作结果变成Scala集合或者变量,另一类将RDD保存到外部文件系统或者数据库中。

数据挖掘与机器学习笔记

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值