Spark 的Standalone集群环境安装与测试-CSDN博客
Spark 程序开发与提交:本地与集群模式全解析-CSDN博客
Spark on YARN:Spark集群模式之Yarn模式的原理、搭建与实践-CSDN博客
目录
(三)每个RDD都会保存与其他RDD之间的依赖关系:血链机制或者血脉机制
(四)可选的,如果是二元组【KV】类型的RDD,在Shuffle过程中可以自定义分区器。
(五)可选的,Spark程序运行时,Task的分配可以指定实现本地优先计算:最优计算位置.
textFile、wholeTextFile、newAPIHadoopRDD 等方法
在大数据处理领域,Spark 已经成为了一个极具影响力的框架。而 RDD(Resilient Distributed Dataset)作为 Spark 的核心数据结构,是理解和高效使用 Spark 的关键。本文将深入探讨 RDD 的相关知识,包括它的诞生背景、设计与定义、在 WordCount 中的应用、五大特性、创建方式以及分区的设定规则等内容,希望能帮助读者更好地掌握 Spark 中 RDD 的使用。
一、RDD 的诞生
(一)数据处理的需求与挑战
当我们处理大规模数据时,传统的数据结构如列表(list)存在很大的局限性。例如,在读取数据的场景中,我们可能会有如下代码:
# step1:读取数据
input = sc.textFile("输入路径")
这里的input
需要一种特殊的数据类型来表示。它既要像集合一样能容纳数据,又要能够处理数据分布在不同服务器上的情况。如果使用list
,由于list
数据只能存储在一台服务器的内存中,无法利用多台服务器的内存来存储大规模分布式数据,所以无法满足需求。
(二)RDD 的应运而生
为了上述这个问题,RDD(弹性分布式数据集)诞生了。它是一种全新的数据类型,能够很好地满足既能表示集合,又能体现分布式存储和处理的要求。例如在后续的数据处理和保存过程中:
# step2:处理数据
result = input.具体的处理逻辑【map、flatMap、filter、reduceByKey等】
# step3:保存结果
result.saveAsTextFile("输出路径")
这里的result
也是分布在不同服务器上的数据,RDD 为这种分布式数据的处理和存储提供了合适的解决方案。
二、RDD 的设计及定义
(一)解决的问题
RDD 解决了在分布式环境下处理大规模数据的难题。它的全称 Resilient Distributed Dataset,从这个英文名称可以看出它的几个关键特性。
弹性 分布式 数据集
(二)定义解读
- 弹性(Resilient)
RDD 具有弹性,这意味着它能够在部分数据丢失或节点故障的情况下自动恢复。例如,在集群中某个节点出现故障时,Spark 可以根据 RDD 的依赖关系重新计算丢失的数据,保证数据处理的连续性和正确性。 - 分布式(Distributed)
数据分布在集群中的多个节点上。这使得 RDD 可以利用多台服务器的资源来存储和处理数据,大大提高了数据处理的规模和效率。与传统的单机数据结构相比,分布式的特性使得 RDD 能够处理海量的数据。 - 数据集(Dataset)
它本质上是一个数据集,可以包含各种类型的数据,如文本数据、数值数据等。用户可以对这个数据集进行各种操作,如转换、过滤、聚合等操作。
弹性分布式数据集,获取RDD有两种方式
1) 将一个现有的集合,丢进去,变为一个分布式的RDD
2) 读取外部数据,变为RDD