• rdd


    Spark是一个通用且高速的大数据处理引擎,它采用了内存计算技术和DAG执行技术,大大提高了大数据处理速度,其效率在某些情况下是hadoop mapreduce引擎的10倍到100倍。此外,Spark还内建了例如MLlib,Spark SQL, Spark Streaming,GraphX等工具,为用户提供了高效的机器学习、SQL查询、流式计算和图计算解决方案。用户可以通过Scala,java,python语言编写Spark应用,也可以通过SparkR工具利用R语言使用Spark。而分布式内存文件系统Tachyon为诸如hadoop mapreduce,Spark等计算框架提供了内存级的文件访问速度。

    RDD是Spark的最基本抽象,是对分布式内存的抽象使用,实现了以操作本地集合的方式来操作分布式数据集的抽象实现。RDD是Spark最核心的东西,它表示已被分区,不可变的并能够被并行操作的数据集合,不同的数据集格式对应不同的RDD实现。RDD必须是可序列化的。RDD可以cache到内存中,每次对RDD数据集的操作之后的结果,都可以存放到内存中,下一个操作可以直接从内存中输入,省去了MapReduce大量的磁盘IO操作。这对于迭代运算比较常见的机器学习算法, 交互式数据挖掘来说,效率提升比较大.

     

    • RDD的特点:

      1. 它是在集群节点上的不可变的、已分区的集合对象。
      2. 通过并行转换的方式来创建如(map, filter, join, etc)。
      3. 失败自动重建。
      4. 可以控制存储级别(内存、磁盘等)来进行重用。
      5. 必须是可序列化的。
      6. 是静态类型的。
    • RDD的好处

      1. RDD只能从持久存储或通过Transformations操作产生,相比于分布式共享内存(DSM)可以更高效实现容错,对于丢失部分数据分区只需根据它的lineage就可重新计算出来,而不需要做特定的Checkpoint。
      2. RDD的不变性,可以实现类Hadoop MapReduce的推测式执行。
      3. RDD的数据分区特性,可以通过数据的本地性来提高性能,这与Hadoop MapReduce是一样的。
      4. RDD都是可序列化的,在内存不足时可自动降级为磁盘存储,把RDD存储于磁盘上,这时性能会有大的下降但不会差于现在的MapReduce。
    • RDD的存储与分区

      1. 用户可以选择不同的存储级别存储RDD以便重用。
      2. 当前RDD默认是存储于内存,但当内存不足时,RDD会spill到disk。
      3. RDD在需要进行分区把数据分布于集群中时会根据每条记录Key进行分区(如Hash 分区),以此保证两个数据集在Join时能高效。

    特性:

    1)分区列表

    2)计算每个分片的函数

    3)对父RDD的一组依赖

    4)对Key-Value数据类型RDD的分区器,用户可以指定分区策略和分区数

    5)每个数据分区的地址列表(如HDFS上的数据块的地址)

  • 相关阅读:
    boston_housing-多分类问题
    reuters-多分类问题
    IMDB-二分类问题
    神经网络学习技巧
    第一个神经网络
    Android依赖管理与私服搭建
    Android 内存泄漏分析与解决方法
    7 结构型模式之
    6 结构型模式之
    5 结构型模式之
  • 原文地址:https://www.cnblogs.com/catcoding/p/5143544.html
Copyright © 2020-2023  润新知