首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一篇文章搞懂 Spark 3.x 的 CacheManager

WHAT CacheManager 是 Spark SQL 中内存缓存的管理者,在 Spark SQL 中提供对缓存查询结果的支持,并在执行后续查询时自动使用这些缓存结果。...数据使用 InMemoryRelation 中存储的字节缓冲区进行缓存。 这个关系是自动替换的查询计划,逻辑计划返回与最初缓存的查询相同的结果。...通过在 Spark 的 conf/log4j.properties 添加下面的配置可以查看 CacheManager 内部发生了什么?...log4j.logger.org.apache.spark.sql.execution.CacheManager=ALL 在触发缓存并且日志打印级别符合的情况下,会出现下面的打印日志: Asked to...优化过的物理查询计划 (在请求 SessionState 执行 analyzed logical plan 之后)。 输入的表名。 analyzed 查询计划的统计信息。 怎么判断查询是否已缓存?

76231

盘点:SQL on Hadoop中用到的主要技术

做逻辑执行计划做优化,这步在下面单独介绍。 把逻辑执行计划转换成可以在机器上运行的物理计划。 对于Hive来说,就是MR/Tez Job等; 对于Impala来说,就是plan fragment。...物理计划中的一个计算单元(或者说Job),由“输入,处理,输出”三要素组成,而逻辑执行计划中的operator相对粒度更细,一个逻辑操作符一般处于这三要素之一的角色。...count(1) from status_updates where ds = '2009-08-01' Hive_compile 2.2.2 Presto 引用自美团技术团队,其中SubPlan就是物理计划的一个计算单元...如下图中所示从SQL编译为最终的物理执行计划大概分为5部,最终生成在每个Worker节点上运行的LocalExecutionPlan。...物理执行计划 逻辑执行计划图中的虚线就是Presto对逻辑执行计划的切分点,逻辑计划Plan生成的SubPlan分为四个部分,每一个SubPlan都会提交到一个或者多个Worker节点上执行。

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    当我们在学习Hive的时候在学习什么?「硬刚Hive续集」

    ):将逻辑执行计划转成可执行的物理计划,如MR/Spark CLI:command line interface,命令行接口。...Hive的工作流程步骤: ExecuteQuery(执行查询操作):命令行或Web UI之类的Hive接口将查询发送给Driver(任何数据驱动程序,如JDBC、ODBC等)执行; GetPlan(获取计划任务...; 语义解析: 遍历 AST Tree,抽象出查询的基本组成单元 QueryBlock; 生成逻辑执行计划: 遍历 QueryBlock,翻译为执行操作树 OperatorTree; 优化逻辑执行计划:...,翻译为 MapReduce 任务; 优化物理执行计划: 物理层优化器进行 MapReduce 任务的变换,生成最终的执行计划。...大概的原理是: 通过SparkSql,加载Hive的配置文件,获取到Hive的元数据信息 通过SparkSql获取到Hive的元数据信息之后就可以拿到Hive的所有表的数据 接下来就可以通过通过SparkSql

    71440

    腾讯云大数据平台的产品组件介绍及测试方法

    :Push模式将消息推给Broker; Consumer:Pull模式将消息从Broker中拉回来; Topic:要传递的消息,有由Kafka集群负责分发; Partition:topic上的物理分组,...5、Region虽然是分布式存储的最小单元,但并不是存储的最小单元。...Spark的核心是RDD(Resilient Distributed Datasets,弹性分布式数据集),是分布式数据的逻辑抽象,物理数据存储在不同节点,但对用户是透明的。...:driver运行的位置,client就是运行在本地,会在本地打印日志;cluster表示运行在集群上,运行信息会打印在spark日志中; --class:主类类名,含包名。...Plugin读取存储的元数据,根据元数据生成生成一个查询计划,计划的生成是基于一个有向无环图(DAG),采用流水线的方式将SQL任务转换成多个stage,根据SQL将任务分发给各个Worker; Worker

    7.4K11

    初识 Spark SQL | 20张图详解 Spark SQL 运行原理及数据抽象

    2 Spark SQL 特点 Spark SQL 有以下特点: 和 Spark Core 的无缝集成,可以在写整个 RDD 应用程序时,配置 Spark SQL 来完成逻辑实现。...Catalyst:负责处理查询语句的整个执行过程,包括解析、绑定、优化、生成物理计划等。 Hive:负责对 Hive 数据的处理。...使用 SparkPlanner 生成可执行计划的物理计划 SparkPlanner 使用 Planning Strategies,对优化的逻辑计划进行转换,生成可以执行的物理计划(Physical Plan...根据过去的性能统计数据,选择最佳的物理执行计划 Cost Model,最后生成可以执行的物理执行计划树,得到 SparkPlan。...使用 execute 执行物理计划 在最终真正执行物理执行计划之前,还要进行 Preparations 规则处理,最后调用 SparkPlan 的 execute(),执行物理计划计算 RDD。

    10.9K86

    Spark SQL在100TB上的自适应执行实践

    由于Spark作业调度是抢占式的,E x C个并发任务执行单元会抢占执行P个任务,“能者多劳”,直至所有任务完成,则进入到下一个Stage。...挑战2:Spark SQL最佳执行计划 Spark SQL在执行SQL之前,会将SQL或者Dataset程序解析成逻辑计划,然后经历一系列的优化,最后确定一个可执行的物理计划。...最终选择的物理计划的不同对性能有很大的影响。如何选择最佳的执行计划,这便是Spark SQL的Catalyst优化器的核心工作。...自适应执行架构 在Spark SQL中,当Spark确定最后的物理执行计划后,根据每一个operator对RDD的转换定义,它会生成一个RDD的DAG图。...最后我们在TPC-DS 100TB数据集上验证了自适应执行的优势,相比较原版Spark SQL,103个SQL查询中,90%的查询都得到了明显的性能提升,最大的提升达到3.8倍,并且原先失败的5个查询在自适应执行下也顺利完成

    2.6K60

    Spark知识体系完整解读

    驱动器节点driver的职责: 把用户程序转为任务task(driver) Spark驱动器程序负责把用户程序转化为多个物理执行单元,这些单元也被称之为任务task(详解见备注) 为执行器节点调度任务...(executor) 有了物理计划之后,Spark驱动器在各个执行器节点进程间协调任务的调度。...当驱动器程序执行时,它会把这个逻辑图转为物理执行计划。 这样 Spark就把逻辑计划转为一系列步骤(stage),而每个步骤又由多个任务组成。这些任务会被打包送到集群中。...如果是spark-hive项目,那么读取metadata信息作为Schema、读取hdfs上数据的过程交给Hive完成,然后根据这俩部分生成SchemaRDD,在HiveContext下进行hql()查询...要把Spark SQL连接已有的hive上,需要提供Hive的配置文件。hive-site.xml文件复制到spark的conf文件夹下。

    1K20

    Hive计算引擎大PK,万字长文解析MapRuce、Tez、Spark三大引擎

    ,该元数据用于对查询树中的表达式进行类型检查,以及基于查询谓词修建分区; 步骤5:编译器生成的计划是分阶段的DAG,每个阶段要么是 map/reduce 作业,要么是一个元数据或者HDFS上的操作。...语义解析: 遍历 AST Tree,抽象出查询的基本组成单元 QueryBlock; 生成逻辑执行计划: 遍历 QueryBlock,翻译为执行操作树 OperatorTree; 优化逻辑执行计划: 逻辑层优化器进行...任务; 优化物理执行计划: 物理层优化器进行 MapReduce 任务的变换,生成最终的执行计划。...Join倾斜 阶段五:生成物理执行计划 生成物理执行计划即是将逻辑执行计划生成的OperatorTree转化为MapReduce Job的过程,主要分为下面几个阶段: 对输出表生成MoveTask 从OperatorTree...还会注意到,如果再次运行相同的查询,它的完成速度比第一个快得多。 Spark执行程序需要额外的时间来启动和初始化yarn上的Spark,这会导致较长的延迟。

    3.1K52

    Spark on Yarn年度知识整理

    驱动器节点driver的职责: 1、把用户程序转为任务task(driver) Spark驱动器程序负责把用户程序转化为多个物理执行单元,这些单元也被称之为任务task(详解见备注) 2、为执行器节点调度任务...(executor) 有了物理计划之后,Spark驱动器在各个执行器节点进程间协调任务的调度。...当驱动器程序执行时,它会把这个逻辑图转为物理执行计划。 这样 Spark就把逻辑计划转为一系列步骤(stage),而每个步骤又由多个任务组成。这些任务会被打爆送到集群中。...如果是spark-hive项目,那么读取metadata信息作为Schema、读取hdfs上数据的过程交给Hive完成,然后根据这俩部分生成SchemaRDD,在HiveContext下进行hql()查询...要把Spark SQL连接已有的hive上,需要提供Hive的配置文件。hive-site.xml文件复制到spark的conf文件夹下。

    1.3K20

    Hive计算引擎大PK,万字长文解析MapRuce、Tez、Spark三大引擎

    ,该元数据用于对查询树中的表达式进行类型检查,以及基于查询谓词修建分区; 步骤5:编译器生成的计划是分阶段的DAG,每个阶段要么是 map/reduce 作业,要么是一个元数据或者HDFS上的操作。...语义解析: 遍历 AST Tree,抽象出查询的基本组成单元 QueryBlock; 生成逻辑执行计划: 遍历 QueryBlock,翻译为执行操作树 OperatorTree; 优化逻辑执行计划: 逻辑层优化器进行...任务; 优化物理执行计划: 物理层优化器进行 MapReduce 任务的变换,生成最终的执行计划。...Join倾斜 阶段五:生成物理执行计划 生成物理执行计划即是将逻辑执行计划生成的OperatorTree转化为MapReduce Job的过程,主要分为下面几个阶段: 对输出表生成MoveTask 从OperatorTree...还会注意到,如果再次运行相同的查询,它的完成速度比第一个快得多。 Spark执行程序需要额外的时间来启动和初始化yarn上的Spark,这会导致较长的延迟。

    3.8K43

    大数据开发:Hive on Spark设计原则及架构

    总的来说,Hive on Spark的设计思路,是重用Hive逻辑层面的功能,从生成物理计划开始,提供一整套针对Spark的实现,比如SparkCompiler、SparkTask等,最终实现Hive查询作为...本质上,Hive的表和Spark的HadoopRDD都是HDFS上的一组文件,通过InputFormat和RecordReader读取其中的数据,因此这个转化是自然而然的。...③使用Hive原语 这里主要是指使用Hive的操作符对数据进行处理。通过将Hive的操作符包装为Function,然后应用到RDD上。...④物理执行计划 通过SparkCompiler将Operator Tree转换为Task Tree,其中需要提交给Spark执行的任务即为SparkTask。...我们可以使用Spark提供的Accumulator来实现该功能。 ⑦测试 除了一般的单元测试以外,Hive还提供了Qfile Test,即运行一些事先定义的查询,并根据结果判断测试是否通过。

    86220

    轻松驾驭Hive数仓,数据分析从未如此简单!

    Abstract Syntax Tree,查询语法树) 接着,Planner组件根据AST生成执行计划 Optimizer进一步优化执行计划 要完成这一系列的动作,Hive须拿到相关数据表的元信息,如表名...将配置好hive.metastore.uris参数的hive-site.xml文件放到Spark安装目录的conf下,我们即可在spark-sql中直接使用SQL语句来查询或是处理Hive表。...在第14讲我们提过,借助于Catalyst与Tungsten这对“左膀右臂”,Spark SQL对SQL查询语句先后进行语法解析、语法树构建、逻辑优化、物理优化、数据结构优化、以及执行代码优化,等等。...配置好这3个参数之后,我们就可以用Hive SQL向Hive提交查询请求,而Hive则是先通过访问Metastore在Driver端完成执行计划的制定与优化,然后再将其“翻译”为RDD语义下的DAG,最后把...不仅如此,在第12讲,我们详细介绍了Spark自身的基础配置项,这些配置项都可以配置到hive-site.xml中,方便你更细粒度地控制Hive与Spark之间的集成。

    45030

    Spark SQL底层执行流程详解(好文收藏)

    Shark的诞生 所以Spark在早期版本(1.0之前)推出了Shark,这是什么东西呢,Shark与Hive实际上还是紧密关联的,Shark底层很多东西还是依赖于Hive,但是修改了内存管理、物理计划...SparkPlanner模块:转化为物理执行计划 根据上面的步骤,逻辑执行计划已经得到了比较完善的优化,然而,逻辑执行计划依然没办法真正执行,他们只是逻辑上可行,实际上Spark并不知道如何去执行这个东西...此时就需要将逻辑执行计划转化为物理执行计划,也就是将逻辑上可行的执行计划变为Spark可以真正执行的计划。...比如join算子,Spark根据不同场景为该算子制定了不同的算法策略,有BroadcastHashJoin、ShuffleHashJoin以及SortMergejoin等,物理执行计划实际上就是在这些具体实现中挑选一个耗时最小的算法实现...,怎么挑选,下面简单说下: 实际上SparkPlanner对优化后的逻辑计划进行转换,是生成了多个可以执行的物理计划Physical Plan; 接着CBO(基于代价优化)优化策略会根据Cost Model

    4.6K20

    大数据开发:Spark SQL数据处理模块

    Spark SQL作为Spark当中的结构化数据处理模块,在数据价值挖掘的环节上,备受重用。自Spark SQL出现之后,坊间甚至时有传言,Spark SQL将取代Hive,足见业内对其的推崇。...Spark SQL原理及组成 Catalyst 优化: 优化处理查询语句的整个过程,包括解析、绑定、优化、物理计划等,主要由关系代数(relation algebra)、表达式(expression)以及查询优化...Spark SQL 内核: 处理数据的输入输出,从不同数据源(结构化数据 Parquet 文件 JSON 文件、Hive 表、外部数据库、已有 RDD)获取数据,执行查询(expression of queries...逻辑计划; 与 Spark Planner 交互,应用策略(strategy)到 plan,使用 Spark Planner 将逻辑计划转换成物理计划,然后调用 next 函数,生成可执行物理计划。...动态代码和字节码生成技术:提升重复表达式求值查询的速率。 Tungsten 优化: 由 Spark 自己管理内存而不是 JVM,避免了 JVM GC 带来的性能损失。

    83920
    领券