自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 Hbase学习笔记 - hbase(1.x)读写

目录写入1. Client处理2. Region写入3. MemStore Flush1. flush 触发时机2. flush 写入流程3. HFile生成读取Compaction文件合并触发时机待合并HFile集合选择策略写入1. Client处理调用Put请求后,数据放入Client缓冲区,满足一定条件后异步批量提交或直接提交(autoflush参数控制) 根据rowkey到hbase:meta表中查询Region位置,对批量插入还会根

2022-02-18 18:56:18 746

原创 Spark源码-2.3 Aggregate物理实现-聚合函数和聚合模式

AggregationIteratorAggregate三种物理算子的doExecute方法遵循类似的代码框架:protected override def doExecute(): RDD[InternalRow] { child.execute().mapPartitionsWithIndex { (partIndex, iter) => val hasInput = iter.hasNext val res = if (!hasInput && group

2021-04-22 21:28:18 229 1

原创 Spark源码-2.3 Aggregate物理实现-3种聚合物理算子

概述Optimizer 中的预处理当存在多列distinct计算时,Optimizer执行RewriteDistinctAggregates规则时,该规则会将多列distinct展开(通过插入Expand算子),非distinct聚合列和每个distinct聚合列会被分为不同的组(假设为N组),每个组为一行数据并带有group id,这样一行数据会被扩展为N行。之后,用两层Aggregate算子计算Expand之后的数据,第一层按前面的分组聚合,第二层再将结果聚合。引用RewriteDistinctAg

2021-04-20 22:03:23 212

原创 Spark源码-2.3 Join物理实现-II

BroadcastNestedLoopJoinExecCartesianProductExecCartesianProductExec对于没有等值join条件但是为inner join的情况,会使用CartesianProductExec。protected override def doExecute(): RDD[InternalRow] = { val numOutputRows = longMetric("numOutputRows") val leftResults .

2021-04-17 18:08:17 140

原创 Spark源码-2.3 Join物理实现-I

BroadcastHashJoinExecShuffledHashJoinExecSortMergeJoinExecStreamedTable与BuildTable(BufferedTable)SparkSql将join的两张表按流式表(StreamedTable)和构建表(BuildTable/BufferedTable)区分。尽管join实现可能不同,但通常而言,构建表被作为查找表数据结构,流式表作为顺序遍历的数据结构。通常通过一条条迭代流式表中数据,并在构建表中查找与当前流式表数据join.

2021-04-15 21:58:45 204

原创 Spark源码-2.3 JoinSelection

概述逻辑计划转换为物理计划SQL被解析为逻辑计划后,会被交给SessionState的executePlan方法,转换为QueryExecution:def executePlan(plan: LogicalPlan): QueryExecution = createQueryExecution(plan)QueryExecution的构造过程将LogicalPlan转换为物理计划: protected def planner = sparkSession.sessionState.plann

2021-04-13 21:28:41 148

原创 Hadoop源码-2.6.4 Yarn NodeManager Container内存资源设置及监控

启动执行Container启动的组件NodeManagerContainerManagerImplpublic StartContainersResponse startContainers(StartContainersRequest requests)private void startContainerInternalContainer(ContainerImpl)Application(ApplicationImpl)ContainersLauncherpubl

2021-01-31 21:34:57 280

转载 MapReduce shuffle过程详解

一、MapReduce计算模型 我们知道MapReduce计算模型主要由三个阶段构成:Map、shuffle、Reduce。 Map是映射,负责数据的过滤分法,将原始数据转化为键值对;Reduce是合并,将具有相同key值的value进行处理后再输出新的键值对作为最终结果。为了让Reduce可以并行处理Map的结果,必须对Map的输出进行一定的排序与分割,然后再交给对应的Reduce,而这个将Map输出进行进一...

2020-10-25 11:42:39 1571

原创 HiveSQL-窗口查询-区间合并

区间合并在业务需求开发中偶尔可以预见,LeetCode中第56题便是该场景的题。本文从改题解法开始,引申到该问题的HiveSQL实现(毕竟本人是数据开发,很多需求都得用SQL实现)。

2020-10-01 22:56:32 668 1

原创 HiveSQL-窗口查询

场景传统的SQL语句并不能支持诸如分组排名、滑动平均值等计算,GROUP BY语句只能为每个分组的数据返回一行结果,而非每条数据一行。新版的SQL标准引入了窗口查询功能,使用WINDOW语句我们可以基于分区和窗口为每条数据都生成一行结果记录,这一标准也已得到了Hive的支持。窗口查询在排行榜中应用广泛,尤其是row_number()函数撑起了排行榜需求半边天。除了排行榜,窗口查询可应用在以下但不限于以下场景:计算分组内TOP k计算分组内排序滑动窗口相关计算(滑动平均数等)计算累计分布…窗

2020-08-28 11:16:57 591 1

原创 接口与继承 I

接口定义public interface GroupedInterface extends Interface1, Interface2, Interface3 {}可以继承多个父接口可见性包级publicprivate: 在一个类内部定义protected: 在一个类内部定义成员成员变量及方法都默认为public方法抽象方法默认方法 default:需要实现静态方法 static:需要实现成员变量常量:默认且只能为 public static fina

2020-08-09 11:48:37 111

原创 Spark源码-branch-0.5 Shuffle

概述shuffle过程研究基于本地运行模式的LocalScheduler;ShuffleFetcher实现为SimpleShuffleFetcher。涉及组件shuffle过程涉及的组件:MapOutputTrackerShuffleManagerShuffleFetchershuffle文件生成在ShuffleMapTask类型run方法中,shuffle数据fetch在依赖类型为宽依赖的rdd(如ShuffledRDD、CoGroupedRDD)的compute方法中。各组件功能t

2020-08-02 21:29:17 144

原创 Spark源码-branch-0.5 SparkContext与DAGScheduler

SparkContext与DAGSchedulerSparkContext初始化Scheduler初始化LocalScheduler初始化MesosScheduler初始化创建rdd及任务提交创建rddstage提交stage划分stage提交结束走读SparkContext初始化及DAGScheduler划分stage并提交任务代码,主要涉及在Driver进程中做的事。SparkContext初始化初始化环境,启动各组件:SparkEnv在createFromSystemProperties方法

2020-08-02 18:14:54 152

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除