
spark
文章平均质量分 89
太晚了困
借我杀死庸碌的情怀。
展开
-
Spark-shuffle源码细读一:ShuffleManager
version:spark 3.0.1ShuffleManager目前只有一个实现SortShuffleManager。分析其源码。原创 2022-01-30 22:23:57 · 1560 阅读 · 0 评论 -
Spark-nettyEnv
private[netty] class NettyRpcEndpointRef( @transient private val conf: SparkConf, private val endpointAddress: RpcEndpointAddress, @transient @volatile private var nettyEnv: NettyRpcEnv)override def send(message: Any): Unit = { require(m.原创 2021-08-22 17:22:15 · 159 阅读 · 0 评论 -
Spark3.0新特性-plugin源码详解与实战
目录@Author Jeffrey.miao转载请标明出处1.plugin介绍2.plugin初始化2.1 PluginContainer2.2 rpc通信2.3SparkPlugin初始化3.实战1.plugin介绍通过在submit作业时指定 --conf="spark.plugins=org.apache.spark.internal.plugin.TestSparkPlugin",加载自定义Plugin。2.plugin初始化2.1 PluginC.原创 2021-08-21 16:36:27 · 1842 阅读 · 2 评论 -
spark源码编译-maven常见编译问题
spark版本3.0.1原创 2021-08-08 14:59:39 · 3107 阅读 · 0 评论 -
Spark的Parquet向量化读取原理
Spark的Parquet向量化读取原理原文链接:https://www.dazhuanlan.com/2020/01/06/5e12b00b2bcf9/测试过程中,发现一个spark的一个参数设置可以带来5倍以上的性能差异参数: spark.sql.parquet.enableVectorizedReader一条SQL的运行结果对比:参数设置为true运行时间22s,设置为false运行时间5.4min。好奇什么样的差异能带来如此大的性能提升,因此接触到一个新的名词——向量化计算什么是向量化转载 2021-05-17 18:22:55 · 766 阅读 · 0 评论 -
spark shuffle全过程源码梳理
理解宽窄依赖窄依赖(父RDD单个分区的计算不依赖于父RDD其他分区):父RDD的一个Partition只能对应子RDD的一个Partition。即父RDD的一个分区上的数据可以单独计算。换句话说,子RDD的某个分区在计算时可以单独计算而不会依赖于父RDD其他Partition上的数据。如Filter,map。宽依赖(父RDD单个分区的计算依赖于父RDD其他分区):父RDD的一个Partition无法单独计算,需要依赖于其他所有的Partition(依赖的不确定性)。表现为,shuffle read原创 2021-05-12 17:00:36 · 403 阅读 · 0 评论 -
Tungsten优化基础之BytesToBytesMap
BytesToBytesMap重要成员属性longArray是一个KV pair:存放key指针(K)和key的hashcode(V)。数据组织形式页内的数据组织形式BytesToBytesMap的内部类MapIterator实现了Iterator接口:next()方法中,先判断如果该页没有records,则跳转到下一页。如果当前页不为空,则返回Location对象。Location中记录了key和value的Offset和size等信息。@Override ..原创 2021-04-29 15:00:17 · 377 阅读 · 0 评论 -
改写SparkSql执行计划之sparksql开发新语法
改写SparkSql执行计划SparkSql开发新的语法支持:首先需要改动ANTLR4文件(在SqlBase.g4中添加文法),重新生成词法分析器(SqlBaseLexer)、语法分析器(SqlBaseParser)和访问者类(SqlBaseVisitor接口与SqlBaseBaseVisitor类),然后在AstBuilder一系列类中添加访问逻辑,最后添加执行逻辑。修改ANTLR4文件添加访问逻辑扩展包dsql下:DSQLAstBuilder继承了ANTLR4生成的默认SqlBaseBase原创 2020-05-17 18:32:32 · 665 阅读 · 0 评论 -
sparkstreaming数据丢失和重复消费问题
sparkstreaming优化总结一方面关于数据丢失和重复消费问题1.数据丢失问题receiver模式:(该部分比较简单,可以跳过)丢失原因:首先,receiver task 接收 kafka 中的数据,并备份到其他 executor 中的blockmanager里,然后将偏移量提交给 zookeeper ,接着 存在备份的 executor 将数据的地址封装并发送到 driver ...原创 2020-03-18 14:41:06 · 1494 阅读 · 0 评论 -
Spark Shuffle的基本原理与特性
通过文章“Spark Scheduler内部原理剖析”我们知道,Spark在DAG调度阶段会将一个Job划分为多个Stage,上游Stage做map工作,下游Stage做reduce工作,其本质上还是MapReduce计算框架。Shuffle是连接map和reduce之间的桥梁,它将map的输出对应到reduce输入中,这期间涉及到序列化反序列化、跨节点网络IO以及磁盘读写IO等,所以说Shuff...转载 2020-01-21 22:25:20 · 469 阅读 · 0 评论 -
Spark数据倾斜的解决方案
数据倾斜的解决方案解决方案一:使用Hive ETL预处理数据方案适用场景:导致数据倾斜的是Hive表。如果该Hive表中的数据本身很不均匀(比如某个key对应了100万数据,其他key才对应了10条数据),而且业务场景需要频繁使用Spark对Hive表执行某个分析操作,那么比较适合使用这种技术方案。方案实现思路:此时可以评估一下,是否可以通过Hive来进行数据预处理(即通过Hive ET...转载 2020-01-20 20:21:13 · 251 阅读 · 0 评论