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

腾讯大数据|天穹SuperSQL执行核心剖析

SQL标准统一:SQL on Hadoop计算引擎百花齐放,但缺少统一的SQL标准,不同引擎的语法方言各不相同。用户需要学习并掌握各个引擎的语法特性,使用门槛陡增 3....查询,如果算子的物理属性与数据相关,该算子将在指定数据中计算。...,继续BSP引擎选择,可选引擎包括:Spark、Hive等 4.NATIVE引擎选择:对于单一数据查询,NATIVE引擎的优先级高于BSP引擎。...例如,查询单ClickHouse表,直接基于ClickHouse JDBC的查询效率远高于Spark查询 06 跨联邦计算 SuperSQL的核心思想是“联邦计算”,将SQL涉及到不同数据的子计算部分...SQL执行阶段,确认所有临时视图注册成功后,基于Spark执行最终改写后的跨SQL 方式二:动态Catalog Presto 是一款支持多数据查询的MPP计算引擎,计算时可基于Catalog加载

64551

TiSpark 原理之下推丨TiDB 工具分享

这里不过多展开,我们只需要知道由 TreeNode 组成的一颗树可以表示一条 SQL过滤条件会被解析为 Filter 算子节点。...分布式计算引擎 Spark ,下推的含义如出一辙,但需要注意在 Spark 其实有两步下推优化:逻辑计划优化阶段:会尽量将算子推向靠近数据的方向,但不会推向数据物理计划生成阶段:将算子推到数据...下推接口 Spark ,提供了 DataSource API 接口用于拓展数据,其中包含了下推接口用于指定需要下推到数据的算子。...其实就是 Spark 逻辑计划摘除相应算子,然后执行物理计划时应用到数据。其问题在于 DataSource API 的框架使得下推能力被大大限制。...该下推策略,我们基于模式匹配,识别出能够进行下推的 Spark 算子,分别执行各种下推逻辑。

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

Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

创建 DataFrames Scala Java Python R 一个 SparkSession, 应用程序可以从一个 已经存在的 RDD, 从hive表, 或者从 Spark数据创建一个...Generic Load/Save Functions (通用 加载/保存 功能) 最简单的形式, 默认数据(parquet, 除非另有配置 spark.sql.sources.default ...Hive 表 Spark SQL 还支持读取和写入存储 Apache Hive 的数据。 但是,由于 Hive 具有大量依赖关系,因此这些依赖关系包含在默认 Spark 分发。...这是因为结果作为 DataFrame 返回,并且可以轻松地 Spark SQL 处理或与其他数据连接。...Skew data flag: Spark SQL 遵循 Hive skew 数据的标记.

25.9K80

SparkSQL内核解析之逻辑计划

逻辑计划阶段被定义为LogicalPlan类,主要有三个阶段: 由SparkSqlParser的AstBuilder将语法树的各个节点转换为对应LogicalPlan节点,组成未解析的逻辑算子树,包含数据信息与列信息...Analyzer主要作用就是将这两种对象or表达式解析为有类型的对象 Catalog体系分析 Catalog通常理解为一个容器或数据库命名空间中的一个层次,Spark主要用于各种函数资源和元数据的统一管理...): Batch Substitution 节点替换操作 CTESubstitution 对应With语句,主要用于SQL子查询模块化,将多个LogicalPlan合并成一个 WindowsSubstitution...Union节点 Batch Subquery => OptimizeSubqueries 当SQL语句包含子查询时,逻辑算子树上遇到SubqueryExpression表达式会进一步递归调用Optimizer...BatchCheckCartesianProducts => CheckCartesianProducts 监测算子树是否有笛卡尔积,如果没有用crossJoin显式使用,抛出异常(除非’spark.sql.crossJoin.enable

2K21

Spark SQL 性能优化再进一步 CBO 基于代价的优化

输出结果与 A 相同,且统计信息不变 若 A.min < B < A.max,被选中的数据占比为 (B.value - A.min) / (A.max - A.min),A.min 不变,A.max...A < value B的估算方法为 若 B < A.min,则无数据被选中,输出结果为空 若 B > A.max,全部数据被选中,输出结果与 A 相同,且统计信息不变 若 A.min < B < A.max...更适合本例 [Spark SQL build side with CBO] 优化 Join 类型 Spark SQL ,Join 可分为 Shuffle based Join 和 BroadcastJoin...不开启 CBO Spark SQL 通过 spark.sql.autoBroadcastJoinThreshold 判断是否启用 BroadcastJoin。...在下图示例,Table 1 大小为 1 TB,Table 2 大小为 20 GB,因此在对二者进行 join 时,由于二者都远大于自动 BroatcastJoin 的阈值,因此 Spark SQL 未开启

1.1K30

Spark SQL 性能优化再进一步 CBO 基于代价的优化

输出结果与 A 相同,且统计信息不变 若 A.min < B < A.max,被选中的数据占比为 (B.value - A.min) / (A.max - A.min),A.min 不变,A.max...启用 Historgram 后,Filter Column A < value B的估算方法为 若 B < A.min,则无数据被选中,输出结果为空 若 B > A.max,全部数据被选中,输出结果与...优化 Join 类型 Spark SQL ,Join 可分为 Shuffle based Join 和 BroadcastJoin。...不开启 CBO Spark SQL 通过 spark.sql.autoBroadcastJoinThreshold 判断是否启用 BroadcastJoin。...在下图示例,Table 1 大小为 1 TB,Table 2 大小为 20 GB,因此在对二者进行 join 时,由于二者都远大于自动 BroatcastJoin 的阈值,因此 Spark SQL 未开启

87930

SparkSql的优化器-Catalyst

一,概述 为了实现Spark SQL,基于Scala的函数编程结构设计了一个新的可扩展优化器Catalyst。Catalyst可扩展的设计有两个目的。...Catalyst将测试给定规则适用的树的哪些部分,自动跳过匹配的子树。这种能力意味着规则只需要对给定优化适用的树进行推理,而不是那些匹配的树。结果就是,新的操作类型加入到系统时规则无需修改。...如果我们不知道它的类型或者没有将它与输入表(或者别名)匹配,那么这个属性称为未解析。Spark SQL使用Catalyst规则和Catalog对象来跟踪所有数据的表以解析这些属性。...2),将命名的属性(“col”)映射到给定操作符的子节点的输入。...Quasiquotes也适用于我们原生Java对象上运行的目标:当访问这些对象的字段时,我们可以对所需字段进行代码生成直接访问,而不必将对象复制到Spark SQL Row,并使用Row 存取方法。

2.6K90

Apache Hudi腾讯的落地与应用

实现的原理基本上就是通过自定义的 Payload class 来实现相同 key 不同源数据的合并逻辑,写端会在批次内做多合并并写入 log,读端在读时合并时也会调用相同的逻辑来处理跨批次的情况。...• 多流拼接,因为 LogFile 存在不同数据流写入的数据,即每条数据的列可能不相同,所以更新的时候需要判断相同 Key 的两个 Record 是否来自同一个流,是做更新,不是做拼接。...批流探索-广告归因 广告归因是指在用户广告行为链路,使用科学的匹配模型两两匹配各环节的行为数据点,可用于判断用户从何渠道下载应用(或打开小程序),通过匹配用户广告行为,分析是何原因促使用户产生转化...如下图所示,渠道方可以获取用户的点击数据,业务可以获取新增用户的数据,点击归因链路,就是将业务新增用户匹配到用户某渠道上近N天的最后一次广告点击,正常的业务过程,先有用户点击广告数据,后有业务新增用户数据...Super SQL底层计算引擎是Spark3,该任务通过US系统每10分钟调度一次。

1.5K30

apache hudi 0.13.0版本重磅发布

由于分区列的数量(此处为 2 – 月和日)与分区路径由 / 分隔的组件数量(本例为 3 – 月、年和日)匹配,因此会导致歧义。 在这种情况下,不可能恢复每个分区列对应的分区值。...旧版本的 hudi ,您不能将多个流式摄取编写器摄取到同一个 hudi 表(一个具有并发 Spark 数据编写器的流式摄取编写器与锁提供程序一起工作;但是,不支持两个 Spark 流式摄取编写器...瞬间将被回滚(预期的那样)。 因此,保持 ckp 消息原样实际上可以保持正确性。 版本亮点 Metaserver 0.13.0 ,我们引入了元数据集中管理服务 Metaserver。...HoodieRecordMerger 是未来 Hudi 实现任何合并语义的核心和真实来源。 在这种能力下,它取代了以前用于实现自定义合并语义的 HoodieRecordPayload 层次结构。...通过 Spark SQL Config 提供 Hudi Config 用户现在可以通过 Spark SQL conf 提供 Hudi 配置,例如,设置 spark.sql("set hoodie.sql.bulk.insert.enable

1.6K10

Hudi原理 | Apache Hudi 典型应用场景介绍

1.近实时摄取 将数据从外部事件日志、数据库提取到Hadoop数据湖是一个很常见的问题。...对于像Cassandra / Voldemort / HBase这样的NoSQL数据库,即使规模集群不大也可以存储数十亿行数据,此时进行批量加载完全不可行,需要采用更有效的方法使得摄取速度与较频繁的更新数据量相匹配...另一方面,Hadoop上的交互式SQL解决方案(Presto和SparkSQL),能在几秒钟内完成的查询。...此外,Hudi没有外部依赖项(例如专用于实时分析的专用HBase群集),因此可以增加运营成本的情况下,对更实时的数据进行更快的分析。 3....为了实现这一目标,Hudi从流处理框架Spark Streaming、发布/订阅系统Kafka或数据库复制技术Oracle XStream引入了类似概念。

2.5K60

智能计算时代 | SuperSQL基于监督学习模型的自适应计算提效能力

同时缩短SQL执行的时间(SQL使用Presto),和增强SQL执行的可靠性(海量大SQL使用Spark)。...没有引入计算提效优化之前,SuperSQL默认的跨计算引擎是Livy(Spark3),而单SQL则是TDW Hive(THive)Spark 2.x。...这里技术挑战主要在于TDW与Presto UDF语法或语义上的匹配性、TDW部分表列名为SuperSQL保留字等。...2.提效判定:通过对某个SQL对应的最优物理计划树进行一系列的RBO匹配与检测,以及对执行计划树的Scan或Join节点进行CBO大小估算, 这类SQL会自动回退Livy + Spark3(跨)或者...THive会先用其Spark 2.x引擎重新执行该SQL,如果再次失败转用MR。

1K30

SparkSql官方文档中文翻译(java版本)

SQL的解析器可以通过配置spark.sql.dialect参数进行配置。SQLContext只能使用Spark SQL提供的”sql“解析器。...当前Spark SQL版本(Spark 1.5.2)不支持嵌套的JavaBeans和复杂数据类型(:List、Array)。...数据格式需要指定全名(例如:org.apache.spark.sql.parquet),如果数据格式为内置格式,只需要指定简称(json,parquet,jdbc)。...现在Parquet数据能自动检测这种情况,并合并这些文件的schemas。 因为Schema合并是一个高消耗的操作,大多数情况下并不需要,所以Spark SQL从1.5.0开始默认关闭了该功能。...数据倾斜标记:当前Spark SQL遵循Hive的数据倾斜标记 jionSTREAMTABLE提示:当前Spark SQL遵循STREAMTABLE提示 查询结果为多个小文件时合并小文件:如果查询结果包含多个小文件

9K30

Spark SQL,DataFrame以及 Datasets 编程指南 - For 2.0

如上所述, Spark 2.0 ,DataFrames 是元素为 Row 的 Dataset Scala 和 Java API 。...一个分区的表,数据往往存储不同的目录,分区列被编码存储各个分区目录。Parquet 数据当前支持自动发现和推断分区信息。...自 Spark 1.6.0 起,分区发现只会发现指定路径下的分区。在上面的例子,如果用户传入路径 path/to/table/gender=male, gender 将不会成为一个分区列。...Parquet 数据现在可以自动检测这种情况并合并这些文件。 由于模式合并是消耗比较高的操作,而且大多数情况下都不是必要的,自 1.5.0 开始默认关闭该功能。...使用时,需要将对应数据库的 JDBC driver 包含到 spark classpath

3.9K20

Apache Hudi 0.14.0版本重磅发布!

重大变化 Spark SQL INSERT INTO 行为 0.14.0 版本之前,Spark SQL 通过 INSERT INTO 摄取的数据遵循 upsert 流程,其中多个版本的记录将合并为一个版本...此策略确定当正在摄取的传入记录已存在于存储时采取的操作。此配置的可用值如下: • none:采取任何特定操作,如果传入记录包含重复项,允许 Hudi 表存在重复项。...MOR 表Compaction 对于 Spark 批写入器(Spark Datasource和 Spark SQL),默认情况下会自动为 MOR(读取时合并)表启用压缩,除非用户显式覆盖此行为。...Spark 读取端改进 MOR Bootstrap 表的快照读取支持 0.14.0 ,为引导表添加了 MOR 快照读取支持。默认行为已通过多种方式进行了更改,以匹配非引导 MOR 表的行为。...HoodieStreamer 基于 SQL 文件的 HoodieStreamer 添加了一个新源 - SqlFileBasedSource,旨在促进一次性回填场景。

1.4K30

Spark系列 - (3) Spark SQL

为了实现与Hive兼容,SharkHiveQL方面重用了HiveHiveQL的解析、逻辑执行计划、执行计划优化等逻辑;可以近似认为仅将物理执行计划从MapReduce作业替换成了Spark作业,通过...3.2.1 三者的共性 都是分布式弹性数据集,为处理超大型数据提供便利; 都是Lasy的,进行创建、转换,map方法时,不会立即执行,只有遇到Actionforeach时,三者才会开始遍历运算,...如果使用DataFrame,你也就是说,当你 DataFrame 调用了 API 之外的函数时,编译器就可以发现这个错。...但如果此时,使用了一个不存在字段的名字,只能到运行时才能发现错误; 如果用的是DataSet[Person],所有匹配的类型参数都可以在编译时发现; 3.2.4 什么时候使用DataFrame或DataSet...3.3 Spark SQL优化 Catalyst是spark sql的核心,是一套针对spark sql 语句执行过程的查询优化框架。

31210

Calcite系列(七):执行流程-合法性校验

基本概念 合法性校验是SQL处理的第二步,计算执行前,提前验证SQL正确性。该验证操作是非线性的,需要基于语法树处理各种嵌套的复杂情况。...:SQL语句中明确指定的转换,通常有CAST函数完成,:CAST(str_column AS INT) 隐式转换:数据库(计算引擎)系统自动进行转换,而无需SQL语句中明确指定 各类计算引擎所具备的隐式转换能力矩阵各不相同...例如,Spark的隐式转换能力远胜于Presto,相同的SQL语句Spark可以执行成功,但在Presto可能会直接抛出类型匹配的错误。...为解决底层各类计算引擎隐式转换能力不同的问题,尽可能让相同语义的SQL可以不同引擎执行成功。...Calcitevalidate阶段实现了一套通用的隐式转换处理机制,主要处理包括: 类型簇校验:基于类型校验,判断SQL目标类型与类型是否属于相同的类型簇 显式转换改写:若目标类型与类型的类型簇不相同

19832

大数据架构模式

选项包括Azure Data Lake Analytics运行U-SQL作业,HDInsight Hadoop集群中使用Hive、Pig或定制Map/Reduce作业,或者HDInsight Spark...实时消息数据流:如果解决方案包含实时体系结构必须包含捕获和存储用于流处理的实时消息的方法。这可能是一个简单的数据存储,将传入的消息放入一个文件夹中进行处理。...您可以HDInsight集群合并匹配Azure托管服务和Apache技术,以利用现有的技能或技术投资。 通过并行性能。大数据解决方案利用并行性,使高性能解决方案能够扩展到大量数据。 弹性的规模。...例如,Azure Data Lake Analytics的U-SQL语言基于Transact-SQL和c#的组合。类似地,基于sql的api也可用于Hive、HBase和Spark。 技术成熟。...虽然核心Hadoop技术(Hive和Pig)已经稳定下来,但是新兴技术(Spark)每个新版本中都会引入大量的更改和增强。

1.4K20

大数据【企业级360°全方位用户画像】匹配型标签累计开发

我希望最美的年华,做最好的自己! 在前面的博客,博主已经为大家带来了关于大数据【用户画像】项目匹配型标签开发的一个步骤流程(?...大数据【企业级360°全方位用户画像】匹配型标签开发)。本篇博客带来的同样是匹配型标签的开发,不同于之前的是,本次标签开发需要将最终的结果与之前的用户标签数据进行合并,而并非是覆写!...和scala相互转换 import scala.collection.JavaConverters._ //引入sparkSQL的内置函数 import org.apache.spark.sql.functions...// 读取hbase的数据,这里将hbase作为数据进行读取 val hbaseDatas: DataFrame = spark.read.format("com.czxy.tools.HBaseDataSource...,与新数据合并 从这一步开始,真正与之前匹配完就完事的程序不同。

58030

查询hudi数据集

一旦提供了适当的Hudi捆绑包, 就可以通过Hive、Spark和Presto之类的常用查询引擎来查询数据集。 具体来说,写入过程传递了两个由table name命名的Hive表。...| | |extractSQLFile| 表上要执行的提取数据的SQL。提取的数据将是自特定时间点以来已更改的所有行。| | |sourceTable| 表名称。Hive环境属性需要设置。...], classOf[org.apache.hadoop.fs.PathFilter]); 如果您希望通过数据DFS上使用全局路径,只需执行以下类似操作即可得到Spark数据帧。...为了做到这一点,设置spark.sql.hive.convertMetastoreParquet = false, 迫使Spark回退到使用Hive Serde读取数据(计划/执行仍然是Spark)。...Hudi RO表可以Presto无缝查询。 这需要在整个安装过程中将hudi-presto-bundle jar放入/plugin/hive-hadoop2/

1.7K30
领券