您的位置:首页 > 其它

Spark计算模型

2016-11-10 17:07 281 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: