
spark
数仓大山哥
路漫漫其修远兮,吾将上下而求索。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spark性能调优-Shuffle相关参数配置
Shuffle 相关Shuffle操作大概是对Spark性能影响最大的步骤之一(因为可能涉及到排序,磁盘IO,网络IO等众多CPU或IO密集的操作),这也是为什么在Spark 1.1的代码中对整个Shuffle框架代码进行了重构,将Shuffle相关读写操作抽象封装到Pluggable的Shuffle Manager中,便于试验和实现不同的Shuffle功能模块。例如为了解决Hash Based的Shuffle Manager在文件读写效率方面的问题而实现的Sort Base的Shuffle Manag原创 2020-07-15 00:23:23 · 1233 阅读 · 0 评论 -
Spark 内存管理模型的基本原理
原文链接:https://mp.weixin.qq.com/s?__biz=MzI4MzY5MDU5Mg==&mid=2247483849&idx=1&sn=3a53d18d44a0c272e570ddafe1cd904d&chksm=eb8792c6dcf01bd04110e20459718cac96295213802d0dda066c350c4486206865664978714b&scene=21#wechat_redirectSpark 作为一个基于.原创 2020-07-15 00:12:47 · 339 阅读 · 0 评论 -
Spark shuffle机制演进史及原理说明(sort-based/hash-based/bypassShuffleManager)
spark shuffle 演进的历史Spark 0.8及以前 Hash Based ShuffleSpark 0.8.1 为Hash Based Shuffle引入File Consolidation机制Spark 0.9 引入ExternalAppendOnlyMapSpark 1.1 引入Sort Based Shuffle,但默认仍为Hash Based ShuffleSpark 1.2 默认的Shuffle方式改为Sort Based ShuffleSpark 1.4 引入Tung原创 2020-07-13 17:04:58 · 1433 阅读 · 0 评论 -
spark任务运行流程及内部任务的调度机制
原文链接:https://juejin.im/post/5e7485e76fb9a07caf447f12本文将针对spark中的Driver和Executor讲起,简述了spark的运行流程,部署模式以及内部任务调度机制,希望针对spark任务执行过程进行尽可能好理解的解析1.两个重要的主角 在spark中,有两个重要的主角是绕不开的,driver和executor,他们的结构呈一主多从模式,driver就是那个单身狗,控制欲很强,权利也很大,每天独自一人没别的事,就想法设法的指挥着手下一原创 2020-07-13 12:00:07 · 1317 阅读 · 0 评论 -
Spark 运行模式与运行流程
概述Spark,是一种通用的大数据计算框架,正如传统大数据技术Hadoop的MapReduce和Storm流式实时计算引擎等。Spark包含了大数据领域常见的各种计算框架, 比如:Spark Core用于离线计算 Spark SQL用于交互式查询 Spark Streaming用于实时流式计算 Spark MLlib用于机器学习 Spark GraphX用于图计算Spark VS MapReduce这部分由于水平有限,只能转至其他大神的总结www.cnblogs.com/dea原创 2020-07-12 13:22:38 · 637 阅读 · 0 评论 -
Spark Stage和宽窄依赖
窄依赖和宽依赖窄依赖:指父RDD的每一个分区最多被一个子RDD的分区所用,表现为一个父RDD的分区对应于一个子RDD的分区,和两个父RDD的分区对应于一个子RDD 的分区。图中,map/filter和union属于第一类,对输入进行协同划分(co-partitioned)的join属于第二类。宽依赖:指子RDD的分区依赖于父RDD的所有分区,这是因为shuffle类操作,如图中的groupByKey和未经协同划分的join。DAGDAG,有向无环图,Direct...原创 2020-07-12 13:16:42 · 342 阅读 · 0 评论 -
MapReduce Shuffle 和 Spark Shuffle 结业篇【转载】
原文链接:https://mp.weixin.qq.com/s?__biz=MzUxOTU5Mjk2OA==&mid=2247485991&idx=1&sn=79c9370801739813b4a624ae6fa55d6c&chksm=f9f60740ce818e56a18f8782d21d376d027928e434f065ac2c251df09d2d4283710679364639&scene=21#wechat_redirectShuffle简介S.转载 2020-07-08 22:12:58 · 202 阅读 · 0 评论 -
为什么Spark比MapReduce快?
通常大家只是说Spark是基于内存计算的,速度比MapReduce要快。或者说内存中迭代计算。其实我们要抓住问题的本质。总结有以下几点:1、Spark vs MapReduce ≠ 内存 vs 磁盘其实Spark和MapReduce的计算都发生在内存中,区别在于:MapReduce通常需要将计算的中间结果写入磁盘,然后还要读取磁盘,从而导致了频繁的磁盘IO。 Spark则不需要将计算的中间结果写入磁盘,这得益于Spark的RDD(弹性分布式数据集,很强大)和DAG(有向无环图),其中DAG记录原创 2020-07-08 22:11:00 · 1682 阅读 · 0 评论 -
Spark: 数据读取与保存
Spark 的数据读取及数据保存可以从两个维度来作区分:文件格式以及文件系统。文件格式分为:Text 文件、Json 文件、Csv 文件、Sequence 文件以及 Object 文件;文件系统分为:本地文件系统、HDFS、HBASE 以及数据库。4.1.1 文本 文件1)数据读取:textFile(String) scala> val hdfsFile = sc.textFile...原创 2019-12-20 15:47:17 · 1040 阅读 · 0 评论 -
Spark算子:RDD键值转换操作–cogroup、join
cogroup ##参数为1个RDD def cogroup[W](other: RDD[(K, W)]): RDD[(K, (Iterable[V], Iterable[W]))] def cogroup[W](other: RDD[(K, W)], numPartitions: Int): RDD[(K, (Iterable[V], Iterab...原创 2019-12-06 17:00:55 · 297 阅读 · 0 评论 -
Spark算子,RDD键值转换操作 combineByKey
查看源代码会发现combineByKey定义如下: def combineByKey[C](createCombiner: (V) => C, mergeValue: (C, V) => C, mergeCombiners: (C, C) => C): RDD[(K, C)]= { ...原创 2019-12-06 14:24:13 · 398 阅读 · 0 评论 -
Spark算子,RDD键值转换操作 partitionBy、flatMapValues、mapValues
partitionBydef partitionBy(partitioner: Partitioner): RDD[(K, V)]该函数根据partitioner函数生成新的ShuffleRDD,将原RDD重新分区。scala> var rdd1 = sc.makeRDD(Array((1,"A"),(2,"B"),(3,"C"),(4,"D")),2)rdd1: org.a...原创 2019-12-05 10:42:10 · 424 阅读 · 1 评论 -
Spark的fold()和aggregate()函数
最近在学习spark,理解这两个函数时候费了一些劲,现在记录一下。1. rdd.fold(value)(func)说到fold()函数,就不得不提一下reduce()函数,他俩的区别就在于一个初始值。reduce()函数是这样写的:rdd.reduce(func)参数是一个函数,这个函数的对rdd中的所有数据进行某种操作,比如:val l = List(1,2,3,4)...原创 2019-12-04 12:09:26 · 372 阅读 · 0 评论