Bigdata

Spark基本组件与概念

2020-04-02  本文已影响0人  coderrrrrrrrr

数据结构

RDD

Resilient Distributed Datasets,意为容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。同时,RDD还提供了一组丰富的操作来操作这些数据。

RDD曾是spark处理数据最核心的基本单元,而spark在1.6推出了新的数据处理对象DataFarme和DataSet。

DataFarme

它在RDD的基础上增加了数据的类型。DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。

缺点:没有了RDD类型安全和面向对象的优点。

Dataset

结合了RDD和DataFrame的优点。它同时具备了RDD的类型安全和面向对象优点,同时也具备了DataFrame的schema和off-heap。同时,它引入了新的概念Encoder。能够按需访问,而无需访问整个对象。

总结

组件

image

https://blog.csdn.net/lisi1129/article/details/54755215

Spark算子

Transformation变换/转换算子

这种变换并不触发提交作业,完成作业中间过程处理。

Transformation 操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。

Action行动算子

这类算子会触发 SparkContext 提交 Job 作业。

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

输入分区与输出分区一对一型

输入分区与输出分区多对一型

输入分区与输出分区多对多型

输出分区为输入分区子集型

Cache型

cache只有一个默认的缓存级别MEMORY_ONLY ,而persist可以根据情况设置其它的缓存级别。

常用算子总览

操作类型 函数名 作用 输入与输出关系
转化操作 map 参数是函数,函数应用于RDD每一个元素,返回值是新的RDD 分区一对一
转化操作 flatMap 参数是函数,函数应用于RDD每一个元素,将元素数据进行拆分,变成迭代器,返回值是新的RDD 分区一对一
转化操作 filter 参数是函数,函数会过滤掉不符合条件的元素,返回值是新的RDD 分区一对一
转化操作 distinct 没有参数,将RDD里的元素进行去重操作 输出分区为输入分区子集
转化操作 union 参数是RDD,生成包含两个RDD所有元素的新RDD 输入分区与输出分区多对一
转化操作 intersection 参数是RDD,求出两个RDD的共同元素 输出分区为输入分区子集
转化操作 subtract 参数是RDD,将原RDD里和参数RDD里相同的元素去掉 输出分区为输入分区子集
转化操作 cartesian 参数是RDD,求两个RDD的笛卡儿积 输入分区与输出分区多对一
行动操作 collect 返回RDD所有元素 返回RDD所有元素
行动操作 count RDD里元素个数
行动操作 countByValue 各元素在RDD中出现次数
行动操作 reduce 并行整合所有RDD数据,例如求和操作
行动操作 fold(0)(func) 和reduce功能一样,不过fold带有初始值
行动操作 aggregate(0)(seqOp,combop) 和reduce功能一样,但是返回的RDD数据类型和原RDD不一样
行动操作 foreach(func) 对RDD每个元素都是使用特定函数
上一篇 下一篇

猜你喜欢

热点阅读