Spark Core简介

第 1 章 RDD 概述

  1.1 什么是 RDD

    RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象。

1.2 RDD 5 个主要属性(property)

           A list of partitions

             多个分区. 分区可以看成是数据集的基本组成单位.

             对于 RDD 来说, 每个分区都会被一个计算任务处理, 并决定了并行计算的粒度.

             用户可以在创建 RDD 时指定 RDD 的分区数, 如果没有指定, 那么就会采用默认值. 默认值就是程序所分配到的 CPU Coure 的数目.

             每个分配的存储是由BlockManager 实现的. 每个分区都会被逻辑映射成 BlockManager 的一个 Block, 而这个 Block 会被一个 Task 负责计算.

           A function for computing each split

             计算每个切片(分区)的函数.

             Spark RDD 的计算是以分片为单位的, 每个 RDD 都会实现 compute函数以达到这个目的.

           A list of dependencies on other RDDs

             与其他 RDD 之间的依赖关系

             RDD 的每次转换都会生成一个新的 RDD, 所以 RDD 之间会形成类似于流水线一样的前后依赖关系. 在部分分区数据丢失时, Spark 可以通过这个依赖关系重新计算丢失的分区数据, 而不是对 RDD 的所有分区进行重新计算.

           Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)

             对存储键值对的 RDD, 还有一个可选的分区器.

             只有对于 key-value RDD, 才会有 Partitioner, key-value RDD Partitioner的值是 None. Partitiner不但决定了 RDD 的本区数量, 也决定了 parent RDD Shuffle 输出时的分区数量.

           Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file)

             存储每个切片优先(preferred location)位置的列表. 比如对于一个 HDFS 文件来说, 这个列表保存的就是每个Partition所在文件块的位置. 按照移动数据不如移动计算的理念, Spark 在进行任务调度的时候, 会尽可能地将计算任务分配到其所要处理数据块的存储位置.  

           A list of partitions

             多个分区. 分区可以看成是数据集的基本组成单位.

             对于 RDD 来说, 每个分区都会被一个计算任务处理, 并决定了并行计算的粒度.

             用户可以在创建 RDD 时指定 RDD 的分区数, 如果没有指定, 那么就会采用默认值. 默认值就是程序所分配到的 CPU Coure 的数目.

             每个分配的存储是由BlockManager 实现的. 每个分区都会被逻辑映射成 BlockManager 的一个 Block, 而这个 Block 会被一个 Task 负责计算.

           A function for computing each split

             计算每个切片(分区)的函数.

             Spark RDD 的计算是以分片为单位的, 每个 RDD 都会实现 compute函数以达到这个目的.

           A list of dependencies on other RDDs

             与其他 RDD 之间的依赖关系

             RDD 的每次转换都会生成一个新的 RDD, 所以 RDD 之间会形成类似于流水线一样的前后依赖关系. 在部分分区数据丢失时, Spark 可以通过这个依赖关系重新计算丢失的分区数据, 而不是对 RDD 的所有分区进行重新计算.

           Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)

             对存储键值对的 RDD, 还有一个可选的分区器.

             只有对于 key-value RDD, 才会有 Partitioner, key-value RDD Partitioner的值是 None. Partitiner不但决定了 RDD 的本区数量, 也决定了 parent RDD Shuffle 输出时的分区数量.

           Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file)

             存储每个切片优先(preferred location)位置的列表. 比如对于一个 HDFS 文件来说, 这个列表保存的就是每个 Partition所在文件块的位置. 按照移动数据不如移动计算的理念, Spark 在进行任务调度的时候, 会尽可能地将计算任务分配到其所要处理数据块的存储位置.

 

posted @   xingmeng1  阅读(226)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示