![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spark
文章平均质量分 83
zkyCoder
这个作者很懒,什么都没留下…
展开
-
Spark Shuffle
Spark ShuffleSpark Shuffle是发生在宽依赖(Shuffle Dependency)的情况下,上游Stage和下游Stage之间传递数据的一种机制。Shuffle解决的问题是如何将数据重新组织,使其能够在上游和下游task之间进行传递和计算。如果是单纯的数据传递,则只需要将数据进行分区、通过网络传输即可,没有太大难度,但Shuffle机制还需要进行各种类型的计算(如聚合、排序),而且数据量一般会很大。如何支持这些不同类型的计算,如何提高Shuffle的性能都是Shuffle机制设计的原创 2022-04-01 18:23:08 · 8433 阅读 · 1 评论 -
Spark SQL概述及其基本用法
Spark SQL概述Spark SQL是什么Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块。Spark SQL 的前身是Shark。Shark是基于 Hive 所开发的工具,它修改了下图所示的右下角的内存管理、物理计划、执行三个模块,并使之能运行在 Spark 引擎上。下图是 Hive和Shark的区别。但是,Spark在不断发展,但又太过依赖Hive,有了不少限制。于是,Spark团队提出了Spark SQL。SparkSQL抛弃原创 2021-11-01 22:50:32 · 6643 阅读 · 0 评论 -
Spark持久化
假设我们在对RDD进行转化的时候,需要用同一个RDD得到两个结果,如下面代码所示。 val rdd = sparkContext.makeRDD(List( ("a",1),("a",2),("c",3), ("b",4),("c",5),("c",6) ),1) val rdd1 = rdd.map(x => { (x._1, x._2 + 1) }) val reduceRDD = rdd1.reduceB原创 2021-10-31 17:37:23 · 306 阅读 · 0 评论 -
Spark的Stage到Task的生成过程
RDD任务的划分主要可以分为四块:Application、Job、Stage 和 Task。Application:初始化一个 SparkContext 即生成一个 Application;Job:一个 Action 算子就会生成一个 Job;Stage:Stage 等于宽依赖(ShuffleDependency)的个数加 1,因为最后一个Stage是ResultStage;Task:一个 Stage 中,最后一个 RDD 的分区个数就是 Task 的个数。Driver根据Stage内的最后RDD原创 2021-10-31 16:49:01 · 343 阅读 · 0 评论 -
Spark由宽依赖创建Stage过程源码解读
我们来探讨一下Spark创建Stage的源码过程。首先,下面我提供一个很简单的测试。我们将一个List经过了两次map和一次reduceByKey后的RDD用collect执行。object TransTest { def main(args: Array[String]): Unit = { val conf = new SparkConf().setMaster("local").setAppName("TransTest") val sparkContext = new Spa原创 2021-10-31 01:47:51 · 272 阅读 · 0 评论 -
RDD算子
RDD 的操作分为转化(Transformation)操作和行动(Action)操作。转化操作就是从一个 RDD 产生一个新的 RDD,而行动操作就是进行实际的计算。转换操作和行动操作一般也被叫做转换算子和行动算子。RDD 的操作是惰性的,当 RDD 执行转化操作的时候,实际计算并没有被执行,只有当 RDD 执行行动操作时才会促发计算任务提交,从而执行相应的计算操作。RDD转换算子首先,我们需要理解一件事。这种算子所输入的往往是一个或多个函数,这个函数用来对转换算子所指定的数据做具体处理。例如://原创 2021-10-30 02:02:05 · 664 阅读 · 0 评论 -
Scala的匿名函数在map()上的简化
Scala的匿名函数简化Scala的匿名函数可以简化得非常方便。下面以spark中的map()做例子。//setMaster设置,local表示本地运行,[]内表示使用的核数,*表示全用,只有local的话表示单线程运算。//setAppName设置App的名称val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Map Example")val sc = new SparkContext(sparkConf)rdd原创 2021-10-29 13:11:54 · 462 阅读 · 0 评论 -
Spark总体架构和运行流程
Spark 总体架构Spark 运行架构如图 1 所示,包括集群资源管理器(Cluster Manager)、多个运行作业任务的工作结点(Worker Node)、每个应用的任务控制结点(Driver)和每个工作结点上负责具体任务的执行进程(Executor)。Driver 是运行 Spark Applicaion 的 main() 函数,它会创建 SparkContext。SparkContext 负责和 Cluster Manager 通信,进行资源申请、任务分配和监控等。Cluster Man转载 2021-10-22 16:31:54 · 1618 阅读 · 0 评论 -
Spark RDD
Spark 的核心是建立在统一的抽象弹性分布式数据集(Resiliennt Distributed Datasets,RDD)之上的,这使得 Spark 的各个组件可以无缝地进行集成,能够在同一个应用程序中完成大数据处理。本节将对 RDD 的基本概念及与 RDD 相关的概念做基本介绍。RDD 的基本概念RDD 是 Spark 提供的最重要的抽象概念,它是一种有容错机制的特殊数据集合,可以分布在集群的结点上,以函数式操作集合的方式进行各种并行操作。通俗点来讲,可以将 RDD 理解为一个分布式对象集合,本转载 2021-10-22 16:24:53 · 466 阅读 · 0 评论 -
Spark概述
SparkSpark 是加州大学伯克利分校 AMP(Algorithms,Machines,People)实验室开发的通用内存并行计算框架。Spark 在 2013 年 6 月进入 Apache 成为孵化项目,8 个月后成为 Apache 顶级项目。Spark 以其先进的设计理念,迅速成为社区的热门项目,围绕着 Spark 推出了 SparkSQL、SparkStreaming、MLlib 和 GraphX 等组件,逐渐形成大数据处理一站式解决平台。Spark相对于Hadoop的优势Hadoop的原创 2021-10-22 14:26:56 · 470 阅读 · 0 评论