
spark
文章平均质量分 80
北 方~
这个作者很懒,什么都没留下…
展开
-
17,关于spark的一些参数优化
Executor执行能力spark.executor.memory=4g用于缓存数据、代码执行的堆内存以及JVM运行时需要的内存。spark.yarn.executor.memoryOverhead=1024Spark运行还需要一些堆外内存,直接向系统申请spark.executor.cores=2单个executor上可以同时运行的task数,该参数决定了一个executor上可以并行执行几个task。Driver执行能力spark.driver.memory=4gdriver端的内存和原创 2021-10-22 15:23:50 · 1167 阅读 · 0 评论 -
16,spark小文件合并
1111原创 2021-10-22 15:22:50 · 1946 阅读 · 0 评论 -
15,spark history webUI使用姿势
Environment环境配置包括了几本的环境信息,和spark properties, 以及各种加载的jar包。了解这些配置是我们排查问题的前提。一般而言,我们通过spark-submit,以及其他方式运行spark-application, 通过Environment,我们可以看到一些基础的配置设置是否和目的一样。比如设置的spark.executor.core, spark.executor.memory是否和传参一致。关于hadoop的相关properties,在这里是看不到的,如果想要看原创 2021-10-13 13:48:25 · 790 阅读 · 0 评论 -
14,spark shuffle实现
2323原创 2021-10-13 13:47:54 · 291 阅读 · 0 评论 -
13,spark内存管理
122121原创 2021-10-12 14:04:30 · 828 阅读 · 0 评论 -
12,spark源码分析-Catalyst流程解析(5)
物理阶段生成之后,status=runnable. 下一个阶段就是物理执行计划执行之前的prepareprepare阶段及时拿到所有的准备阶段的任务,依次调用apply().里面比较重要的是EnsureRequirements(确保执行计划分区与排序正确性), CollapseCodegenStages(代码生成)。EnsureRequirements主要就是验证输出的分区(partition)和我们要的分区是不是一样,不一样在一定的条件下需要加入shuffle处理重分区,如果有排序需求还会排原创 2021-09-24 15:48:29 · 397 阅读 · 0 评论 -
11,spark源码分析-Catalyst流程解析(4)
此阶段是从优化过的LogicalPlan转换成物理执行计划PhysicalPlanplan 是从BaseSessionStateBuilder中实例化的。sparkPlan的继承关系:sparkPlan -> SparkStrategies -> QueryPlanner -> TreeNodesparkPlan继承了SparkStrategies, strategies()方法里面包含四部分,1:自定义实验的策略2:sparkplan扩展的一些策略。4: 一些基础操作原创 2021-09-24 15:47:10 · 703 阅读 · 0 评论 -
10,spark源码分析-Catalyst流程解析(3)
因为Optimizer集成了RuleExecutor,所以和Analyzer的解析逻辑是一样的,Optimizer也有大量的Rule规则。原创 2021-09-24 15:38:41 · 438 阅读 · 0 评论 -
9,spark源码分析-Catalyst流程解析(2)
QueryExecution在调用分析器之前,首先创建QueryExecution. QueryExecution 是spark执行查询的主链路。RuleExecutorRule是一系列的规则的接口类,比如分析器的各种分析规则,优化器的各种规则,执行器的各种规则等等。RuleExecutor 就是各种不同Rule匹配逻辑执行计划树结构并且生成新的树结构的生成器。在RuleExecutor的实现子类(如Analyzer和Optimizer)中会定义Batch(每个Batch代表着一套规则).原创 2021-09-24 10:59:33 · 838 阅读 · 0 评论 -
8,spark源码分析-Catalyst流程解析(1)
首先从网上找来一张图,说明一下sql解析的整个流程。sql语句经过Antlr4的语法和词法解析,生成Unresolved Logical Plan;analyzer与catalog进行绑定, 把Unresolved Logical Plan转换为Logical Plan;optimizer对Logical Plan优化,生成Optimized LogicalPlan;SparkPlan将Optimized LogicalPlan转换成 Physical Plan;prepareForExecut原创 2021-09-23 13:47:56 · 792 阅读 · 0 评论 -
7,spark源码分析-sparkSQL任务提交
1原创 2021-09-23 11:54:24 · 1278 阅读 · 0 评论 -
6,spark源码分析-task提交(2)
1212原创 2021-09-23 11:52:09 · 306 阅读 · 0 评论 -
5,spark源码分析-stage提交
我们以sparkPI的样例,我们发现reduce是一个action操作,map, parallelize是transation操作。生成两个两个RDD, MapPartitionsRDD, ParallelCollectionRDD。程序的入口从reduce函数开始。RDD.reduce我们知道map, parallelize全部是transaction操作,对应的方法体是new一个新的RDD出来,而reduce是action操作,是使用上一个RDD的实例做对应的操作,所以当前this.rdd是上一原创 2021-09-18 12:08:26 · 375 阅读 · 0 评论 -
sparksql 谓词下推功能的bug
场景描述,一个普通的sql,因为查询条件过多,导致task一直在filter, 假死的状态。spark的版本为spark-2.3sql语句CREATE TABLE `temp.tmp_st_loan_bfm_crdamt_slast_xray20210727`( `userid` bigint, `flag_type` string, `score_bairong` bigint, `bfm_used_rate` double, `lrm_credit_amt` big原创 2021-07-29 15:23:06 · 868 阅读 · 0 评论