《基于Spark的机器学习资料31、Spark编程模型RDD设计以及运行原理.pdf》由会员分享,可在线阅读,更多相关《基于Spark的机器学习资料31、Spark编程模型RDD设计以及运行原理.pdf(1页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Spark 编程模型 RDD 设计以及运行原理 一、RDD 介绍 RDD:弹性分布式数据集,是一个分区的只读记录的集合。也可以这样理解,是一个提供了许多操作接口的数据集合。它还包括容错、数据集内的数据可以并行处理等。二、RDD 操作类型 RDD 的操作类型分为两类,转换(transformations)和行动(action),转换是根据原有的 RDD 创建一个新的 RDD,行动是对 RDD 操作后把结果返回给 driver。RDD 的所有转换操作都是 lazy 模式,即 Spark 不会立刻结算结果,而只是简单的记住所有对数据集的转换操作。这些转换只有遇到 action 操作的时候才会开始计算
2、。三、RDD 依赖关系 RDD 提供了许多转换操作,每个转换操作都会生成新的 RDD,这时候新的 RDD 便依赖于原有的 RDD,这种 RDD 之间的依赖关系最终形成 DAG。RDD 之间的依赖关系分为两种,为窄依赖和宽依赖。宽依赖:RDD 的每个 partition 都依赖于父 RDD 的所有 Partition。窄依赖:只依赖一个或部分的 Partition。四、RDD partitioner 与并行度 每个 RDD 都有 Partitioner 属性,它决定了该 RDD 如何分区,当然 Partition 的个数还将决定每个 Stage 的 Task 个数。当前 Spark 需要应用设置 Stage 的并行 Task 个数(配置项为:spark.default.parallelism),在未设置的情况下,子 RDD会根据父 RDD 的 Partition 决定,如 map 操作下子 RDD 的 Partition 与父 Partition 完全一致,Union 操作时子 RDD的 Partition 个数为父 Partition 个数之和。如何设置 spark.default.parallelism 对用户是一个挑战,它会很大程度上决定 Spark 程序的性能。