![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spark
文章平均质量分 77
bone_ds
关于明天的事,后天就知道了.
展开
-
[ Spark ] DStream转换
无状态转化操作就是把简单的 RDD 转化操作应用到每个批次上,也就是转化 DStream 中的每一个 RDD。部分无状态转化操作列在了下表中。注意,针对键值对的 DStream 转化操作(比如reduceByKey())要添加 import StreamingContext._才能在 Scala 中使用。 事实上每个 DStream 在内部是由许多 RDD(批次)组成,且无状态转化操作是分别应用到每个 RDD 上的。有状态转化操作UpdateStateByKeyUpdateStateByK原创 2022-06-14 00:23:39 · 177 阅读 · 0 评论 -
[ Spark ] RDD\DataFrame\DataSet三者关系
版本:Spark1.0 => RDDSpark1.3 => DataFrameSpark1.6 => Dataset1)RDD、DataFrame、DataSet 全都是 spark 平台下的分布式弹性数据集2)三者都有惰性机制,在进行创建、转换不会立即执行,只有在遇到Action 如 foreach 时,三者才会开始遍历运算;3)三者有许多共同的函数,如 filter,排序等;4)在对 DataFrame 和 Dataset 进行操作许多操作都需要这个包:import spark.implicits.原创 2022-06-14 00:22:39 · 182 阅读 · 0 评论 -
[ Spark ] 累加器.广播变量
用来把Executor端变量信息聚合到Driver端。在Driver程序中定义的变量,在Executor端的每个Task都会得到这个变量的一份新的副本,每个task更新这些副本的值后,传回Driver端进行merge。累加器的少加/多加问题在于转换算子没有/多次执行自定义累加器继承AccumulatorV2,并设定泛型重写累加器的抽象方法广播变量 在多个并行操作中使用同一个变量,但是 Spark会为每个任务分别发送。 广播变量用来高效分发较大的对象。向所有工作节点发送一个较大的只原创 2022-06-14 00:20:56 · 68 阅读 · 0 评论 -
[ Spark ] RDD序列化.依赖.持久化
从计算的角度, 算子以外的代码都是在Driver端执行, 算子里面的代码都是在Executor端执行。算子内用到算子外的数据,这样就形成了闭包的效果,算子外的数据需要序列化传值给Executor端执行,闭包检测。 这里的闭包指:就算Executor端的代码一行没走,只要使用了算子外的对象,就算闭包,即改变了变量的生命周期,就需要闭包检测实例:2 RDD依赖关系 相邻的新的RDD依赖旧的RDD,多个连续的RDD的依赖关系,称之为血缘,同时RDD会保存血缘关系,但不会保存数据, 容错:RD原创 2022-06-14 00:19:36 · 276 阅读 · 0 评论 -
[ Spark ] RDD行动算子汇总
行动算子:触发作业执行的方法,底层调用的是环境对象的runJob方法,底层代码中会创建ActiveJob,并提交执行1)def reduce(f: (T, T) => T): T 先聚合分区内数据,再聚合分区间数据,这里聚合的结果的类型和数据源中的类型一致2)def collect(): Array[T] 将不同分区的数据按照分区顺序采集到Driver端内存中,形成数组3)def count(): Long 返回RDD中元素的个数4)def first(): T 返回RDD中的第一个元素5)def原创 2022-06-14 00:15:24 · 285 阅读 · 0 评论 -
[ Spark ] RDD转换算子汇总
前置知识:为了区分RDD的方法和集合的方法RDD方法=>RDD算子(改变问题状态的操作,在Spark中表现为:将旧的RDD转换为新的RDD)RDD整体上分为Value类型、双Value类型和Key-Value类型1)def map[ U: ClassTag ] (f: T => U): RDD[U] 将数据逐条进行映射转换,值/类型的转换2)def mapPartitions[U: ClassTag]( f: Iterator[T] => Iterator[U], preservesPartitio原创 2022-06-14 00:13:56 · 629 阅读 · 0 评论 -
[ Spark ] RDD创建.分区与并行度.分区策略
底层代码中,makeRDD方法其实就是parallelize方法任务的并行度由分区数决定,但是实际生产时,如果可用核数不足,并行会演变为并发1)makeRDD方法的第二个参数直接传入分区的数量2)如果没有传入第二个参数,使用默认值:defaultParallelism(默认并行度) 该值大小为scheduler.conf.getInt(“spark.default.parallelism”, totalCores),即从该对象中获得某一特定值,否则使用totalCores(当前环境的最大核数)3)手动指定原创 2022-06-14 00:07:26 · 320 阅读 · 0 评论 -
[ Spark ] RDD核心概念,工作原理
Spark计算框架为了能够对数据进行高并发和高吞吐的处理,封装了三大数据结构,用于处理不同的应用场景。三大数据结构分别是:1)RDD : 弹性分布式数据集2)累加器:分布式共享只写变量3)广播变量:分布式共享只读变量ps:数据结构:简单理解为 数据与逻辑的组织形式和存储方式1.RDD定义? RDD(Resilient Distributed Dataset)为弹性分布式数据集,是Spark中最基本的数据处理模型。代码中是一个抽象类(子类多,使用装饰者模式扩充功能),它代表一个弹性的、不可变、可分区原创 2022-06-14 00:05:10 · 707 阅读 · 0 评论 -
[ Spark ] Spark核心概念
1.Spark or Hadoop?Hadoop的MapReduce和Spark同为计算框架,使用时如何选择? 1)MR由于其设计初衷并不是为了满足循环迭代式数据流处理,因此在多并行运行的数据可复用场景(如:机器学习、图挖掘算法、交互式数据挖掘算法)中存在诸多计算效率等问题。Spark就是在传统的MapReduce 计算框架的基础上,利用其计算过程的优化,从而大大加快了数据分析、挖掘的运行和读写速度,并将计算单元缩小到更适合并行计算和重复使用的RDD。 2)Spark所基于的scala语言恰恰擅长函原创 2022-06-13 23:59:49 · 552 阅读 · 0 评论