Spark计算模型

本文介绍了Spark的核心计算模型——弹性分布式数据集RDD,包括RDD的构造、数据切分、属性以及转换和执行算子。RDD是数据处理流水线的基础,通过map、filter等转换算子构建数据处理逻辑,而reduce、count等执行算子则触发实际计算并返回结果。RDD的特性如partition、compute、dependencies等保证了其高效分布式处理能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Spark程序示例

数据处理流水线:

val file = sc.textFile("hdfs://xxx") //1)输入与构造RDD

val errors = file.filter(line=>line.contains("EORROR")) //2)转换Transformation

errors.count() //3)输出Action


数据结构RDD + 算法(两类RDD函数支撑)


2.弹性分布式数据集RDD

将数据切分成不同的块,分布在集群的不同节点上,通过统一的元数据进行整个数据的管理。

属性:

1)partition(A list of partitions) 数据块 ,它存储了所有数据块的列表;

2) compute(A function for computing each split),支持例如不同的RDD完成不同的运算;

3) dependencies(A list of dependencies on other RDDs),RDD的依赖;

4) partitioner,在数据分布式的结构中,对数据要进行shffer进行节点之间的数据网络传输进行重分区;

5) perferredLocations,如果输入是从HDFS,则能够知道数据存储在哪个节点上,可以就近使用数据块,避免数据块的网络传输,读取本地数据。


3.RDD数据算子

1)转换(Transformations):

Transformations操作是延迟计算的,不触发执行。

2)执行(Actions)

Actions算子会触发Spark提交作业(Job),并将数据输出Spark系统。


Transformation:

-map(func):对调用map的RDD数据集中的每个element都使用func,然后返回一个新的RDD,这个返回的数据集是分布式的数据集。

-filter(func):对调用filter的RDD数据集中的每个元素都是用func,然后返回一个包含使func为true的元素构成的RDD。

-reduceByKey(func,[numTasks]):就是用一个给定的reduce func再作用在groupByKey产生的(K,Seq[V]),比如求和,求平均值。


Action:

-reduce(func):就是聚集,但是传入的函数是两个参数输入返回一个值,这个函数必须是满足交换律和结合律的。

collect():一般在filter后者足够小的结果的时候,再用collect封装返回一个数据。

-count():返回的是dataset中的element的个数。

-first():返回的是dataset中的第一个元素。

-take(n):返回的是前n个elements


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值