
Spark
文章平均质量分 96
点滴笔记
点滴笔记、努力生活、加油!
展开
-
Spark | 解析SparkSQL运行原理之Sql Analysis阶段
(一) 解析SparkSQL运行原理之Sql Parse 阶段上一篇文章在介绍Sql Parse阶段时,该阶段主要是使用Antlr4将一条SQL语句解析成语法树,然后使用Antlr4的访问者模式遍历生成语法树,也就是Logical Plan。但其实,Sql Parse这一阶段生成的Logical Plan是被称为Unresolved Logical Plan。所谓Unresolved,就是说SQL语句中的对象都是未解释的。在论文中有介绍到Spark Sql以要计算的关系开头,从SQL解析器返回的抽象原创 2020-08-18 11:25:43 · 476 阅读 · 0 评论 -
Spark | Stage进度条展示(showConsoleProgress)
spark.version = 2.4.4在执行Spark任务中,经常会看到以下类似的Stage进度日志信息,如下:[Stage 0:> (0 + 0) / 1753][Stage 0:> (0 + 65) / 1753][Stage 0:>原创 2020-07-27 18:25:16 · 3911 阅读 · 1 评论 -
Spark | 解析SparkSQL运行原理之Sql Parse 阶段
spark.version=2.4.4在学习SparkSQL运行原理前可以先了解下SparkSQL中涉及到的一些基础概念,SparkSQL架构待续补充~~~~~原创 2020-08-04 17:35:12 · 1665 阅读 · 0 评论 -
Spark | SparkSQL架构
目录SparkSQLDataFrame APIDataFrame & DataSet & RDD 三者区别SparkSQL 组成SparkSQL Catalyst OptimizerTreeTreeNodeQueryPlanExpressionRuleRuleExecutorCatalyst大致流程Referencesspark.version = 2.4.4站在上帝角度学习下SparkSQL架构相关内容SparkSQL...原创 2020-07-01 15:51:03 · 1212 阅读 · 0 评论 -
Spark | 基于源码解析SparkSession初始化过程
Spark.version: 2.4.4Apache Spark 2.0引入了SparkSession,其为用户提供了一个统一的切入点来使用Spark的各项功能,例如不再需要显式地创建SparkConf, SparkContext 以及 SQLContext,因为这些对象已经封装在SparkSession中。另外SparkSession允许用户通过它调用DataFrame和Dataset相关API来编写Spark程序。其次SparkSession通过生成器设计模式(Builder Design Pa原创 2020-06-28 18:50:36 · 3904 阅读 · 0 评论 -
Spark | SparkSql Insert Overwrite 小文件过多
SparkSql在执行Hive Insert Overwrite Table 操作时,默认文件生成数和表文件存储的个数有关,但一般上游表存储个数并非下游能控制的,这样的话得考虑处理小文件问题。小文件产生原因:spark.sql.shuffle.partitions=200 ,sparksql默认shuffle分区是200个,如果数据量比较小时,写hdfs时会产生200个小文件。可尝试通过以下操作来解决小文件过多问题,如下Shuffle Partition--conf spark.s...原创 2020-06-22 20:48:16 · 8692 阅读 · 0 评论 -
Spark | 读取Hive表数据写入MySQL
import java.sql.Connectionimport scala.collection.mutable.ArrayBufferobject JdbcTemplateUtil extends Serializable { /** * 单条操作 * @param sql * @param params */ def executeSql(conn: Connection, sql: String, params: ...原创 2020-06-11 14:38:34 · 2659 阅读 · 0 评论 -
Spark | 基础概念
Spark基础核心概念Spark 任务提供多层分解的概念,Spark 组件将用户的应用程序分解为内部执行任务并提供执行容器,资源管理为 Spark 组件提供资源管理和调度。应用程序(Application):应用程序(Application):由一个 Driver Program 和多个 Job 构成。 作业(Job): RDD 中由 Action 操作所生成的一个或多个调度阶,即由多个 Stage 组成。 调度阶段(Stage):也叫作任务集(Task Set),因 RDD 之间依赖关系拆原创 2020-06-08 14:43:33 · 353 阅读 · 0 评论 -
Spark | 记录下Spark作业执行时常见的参数属性配置
Spark CoreSpark StreamingSpark SQL原创 2020-06-08 15:28:33 · 1001 阅读 · 0 评论 -
SparkSQL| RDD&DataFrame&DataSet
RDD: RDD就是一个不可变的分布式对象集合,是Spark对数据的核心抽象。每个RDD都被分为多个分区,每个分区就是一个数据集片段,这些分区运行在集群中的不同节点上。RDD提供了一种高度受限的内存共享模型,即RDD是只读的,只能基于稳定的物理储存中的数据集来创建RDD或对已有的RDD进行转换操作来得到新的RDD。 DataFrame: DataFrame是用在Spark SQ...转载 2019-12-09 17:01:38 · 215 阅读 · 0 评论 -
Spark SQL | 查询优化器Catalyst
https://www.jianshu.com/p/410c23efb565https://www.cnblogs.com/shishanyuan/p/8455786.html原创 2019-12-09 16:25:00 · 412 阅读 · 0 评论 -
Spark Streaming | 连接Kafka的两种方式
本文将从Spark Streaming获取kafka数据的两种模式入手,结合个推实践,带你解读Receiver和Direct模式的原理和特点,以及从Receiver模式到Direct模式的优化对比。 2 两种模式的原理和区别Receiver模式1. Receiver模式下的运行架构1) InputDStream: 从流数据源接收的输入数据。2) Receiver:负责接收数据...转载 2019-12-09 10:13:45 · 806 阅读 · 0 评论 -
Spark | 分组排序
记录下Spark分组排序时遇到的问题,需求问题如下:当前有HDFS文件数据内容为:(字段顺序为手机号-phone、用户ID-userId、线路-line、时间戳-clientTimestamp),然后读取HDFS文件内容生成rdd,其中rdd的格式为( (phone,userId,line))130xxxxxxxx&1980098385910287364&1004&a...原创 2019-12-04 17:24:06 · 1134 阅读 · 0 评论 -
Spark | 调度器&调度池&调度策略
Spark在提交应用程序执行时会根据RDD依赖关系生成DAG图,然后交给DAGScheduler进行划分作业和调度阶段。而对于多个作业之间的调度,Spark提供两种调度策略:FIFO模式(默认模式) & FAIR模式。其中调度策略执行过程如下:创建调度池:在TaskSchedulerImpl.initialize()中先创建根调度池rootPool对象,然后根据系统配置的调度模式创...原创 2019-12-04 17:12:17 · 610 阅读 · 0 评论 -
Spark | 数据本地性
Spark在Driver上会对Application的每一个Stage的Task进行分配前,都会计算出每个Task要计算的是哪个分片数据,RDD的某个partition;Spark的Task分配算法会让每个Task正好分配到它要计算的数据所在的节点,这样不用在网络间传输数据,因此在DAG划分Stage分配Task任务时候就确定好了数据本地性。但通常来说,很有可能因为节点A的计算资源和计算能力...原创 2019-12-04 16:02:17 · 461 阅读 · 0 评论 -
Spark | BlockManager
BlockManager是整个Spark存储模块中的核心,它不仅提供存储模块处理各种存储方式的读写方法,而且还为Shuffle模块提供数据处理等操作接口。BlockManager存在于Driver端和每个Executor中:Driver端的BlockManager 保存了数据的元数据信息;而在Executor中的BlockManager则根据接受到的消息类型进行操作:当Executor的...原创 2019-12-04 15:43:01 · 246 阅读 · 0 评论 -
Spark | Shuffle 的写操作机制
基于哈希的Shuffle写操作(<V1.1): Spark在该机制中每一个Mapper会根据Reduce数量创建出相应的Bucket,即bucket=MapTaskNum*ReduceTaskNum。Mapper生成的结果会根据设置的Partition算法填充到每个Bucket中,Bucket可以抽象理解为一个文件,当Reduce启动时会根据任务的编号和所依赖的Mapper的编号从源端或者本...原创 2019-12-04 14:42:06 · 184 阅读 · 0 评论 -
Spark | 分区器Paritioner
Spark中默认提供两种分区器(partitioner):哈希分区器(HashPartitioner):哈希分区器会根据key-value的键值key的hashcode进行分区,即对于给定的key,计算其hashCode,并除于分区的个数取余,如果余数小于0,则用余数+分区的个数,最后返回的值就是这个key所属的分区ID。该分区方法可以保证同一组的键出现在同一个节点的分区上。速度快,但是可...原创 2019-12-04 11:30:35 · 406 阅读 · 0 评论 -
Spark | checkpoint机制
跟着强大网友学习一波:深入浅出checkpoint机制:https://www.jianshu.com/p/a75d0439c2f9原创 2019-12-04 10:34:01 · 158 阅读 · 0 评论 -
Spark | Shuffle
Shuffle简介Shuffle的本意是洗牌、混洗的意思,把一组有规则的数据尽量打乱成无规则的数据。而在MapReduce中,Shuffle更像是洗牌的逆过程,指的是将map端的无规则输出按指定的规则“打乱”成具有一定规则的数据,以便reduce端接收处理。其在MapReduce中所处的工作阶段是map输出后到reduce接收前,具体可以分为map端和reduce端前后两个部分。在shuf...转载 2019-12-03 17:01:18 · 190 阅读 · 0 评论