最新
SQL引擎-Calcite 设计与实现
一、概述Apache Calcite 是一个动态数据管理框架,包含了数据库管理系统的许多组成部分,但省略了存储原语。提供了一个行业标准的 SQL 解析器和验证器,一个可定制的优化器,具有可插拔规则和成本函数,逻辑和物理代数运算符,从 SQL 到代数(以及相反)的各种转换算法,以及许多适配器,用于在 Cassandra、Druid、Elasticsearch、MongoDB、Kafka 等系统上执行 SQL 查询。
二、设计Apache Calcite 的设计目标之一就是提供一套通用的 SQL 查询处理框架,使得可以使用一套代码来处理各种类型的数据源,包括关系型数据库、图数据库等
2.1. 服务层模块Calcite 接收请求的第一站就是服务层组件,这一部分组件如今已经独立出来成为一个单独的开源项目 Avatica,Avatica 对 JDBC 协议进行了封装,将用户的 SQL 请求转发给 Calcite-core 组件进行进一步的解析、校验、优化和执行。
接收客户端的 SQL 请求
校验用户的配置信息
转发给 calcite-core 模块执行
封装结果请求并返回。
服务层组 ...
SQL 引擎系列
还未施工😯~~~
Hadoop-系列
一、概述Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构,主要解决,海量数据的存储和海量数据的分析计算问题。
二、核心组件Hadoop 的核心组件是 HDFS,MapReduce 以及 YARN。
2.1. HDFSHDFS 是 Hadoop 分布式文件系统,是指提供对应用程序数据的高吞吐量访问的分布式文件系统。
正在持续施工中ing~~~
引用本站文章
Hadoop-组件-HDFS 系列
Joker
2.2. YarnYarn 是作业调度和集群资源管理的框架。
正在施工中ing~~~
引用本站文章
Hadoop-组件-Yarn 系列
Joker
...
Spark 系列
一、概述Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是 加州大学伯克利分校的 AMP 实验室开源的类 Hadoop MapReduce 的通用并行框架。
二、理论笔记
引用本站文章
Spark-理论笔记系列
Joker
三、源码学习
引用本站文章
Spark-源码学习系列
Joker
四、大厂分享
引用本站文章
Spark-发展-大厂分享系列
...
Spark-源码学习-SparkCore-节点退役
一、概述Spark 节点退役特性包括元数据操作(如将 Worker 从可调度资源列表中排除)以及数据迁移(Shuffle 文件和 RDD 块迁移)https://www.waitingforcode.com/apache-spark/what-new-apache-spark-3.1-nodes-decommissioning/read
二、元数据操作三、数据迁移数据迁移入口: $CoarseGrainedExecutorBackend.decommissionSelf()$ 方法中。
首先,该方法会验证节点退役功能是否已启用,即 spask.decommission.enabled 的值是否为 true。此时,执行器还会检查它是否尚未运行退役进程。如果是,则在此阶段不会继续执行退役进程,而是让已启动的进程终止。
12345if (!env.conf.get(DECOMMISSION_ENABLED)) { return} else if (decommissioned) { return}
经过这两次检查后,执行器会将自己标记为退役 ...
Spark-源码学习-SparkSession-Extensions
一、概述Spark SQL Extensions 提供了一种灵活的机制,使得 Spark 用户可以在 SQL 解析的 Parser、Analyzer、Optimizer 以及 Planner 等阶段进行自定义扩展,包括自定义 SQL 语法解析、新增数据源等等。
二、设计SparkSessionExtensions 保存了用户自定义的扩展规则,包含以下方法:
• $buildResolutionRules$ 构建扩展规则添加到 Analyzer 的 resolution 阶段
• $injectResolutionRule$ 向 Analyzer 的 resolution 阶段注册扩展规则生成器
• buildPostHocResolutionRules:构建扩展规则添加到 Analyzer 的 post-hoc resolution 阶段
• injectPostHocResolutionRule:向 Analyzer 的 post-hoc resolution 阶段注册扩展规则生成器
• buildCheckRules:构建扩展检查规则,该规则将会在 analysis 阶段之后运 ...
Flink-源码学习-API-Catalog 体系
一、概述数据处理最关键的方面之一是管理元数据。元数据可以是临时的,如临时表、或者通过 TableEnvironment 注册的 UDF。元数据也可以是持久化的,例如 HiveMetastore 中的元数据。Catalog 提供了一个统一的 API,用于管理元数据,如数据库、表、分区、视图以及数据库或其他外部系统中存储的函数和信息,并使其可以从 Table API 和 SQL 查询语句中来访问。
二、元数据 Catalog API 设计Catalog 在 Flink 中提供了一个统一的 API,用于管理元数据,Catalog 提供了元数据信息,例如数据库、表、分区、视图以及数据库或其他外部系统中存储的函数和信息。
2.1. 元数据模型Flink 的元数据模型定义了任务的元数据结构,如数据库、表、视图、函数等,Flink 定义了 4 类接口分别对应于 4 种元数据类型,元数据类型之间的层次关系如图,最顶层的 Catalog 是元数据的容器。
2.1.1. 数据库数据库等同于数据库中的库实例,接口定义为 CatalogDatabase,定义数据库实例的元数据,一个数据库实例中包含表、 ...
Flink-源码学习-FlinkSQL&Table-Module 体系
一、概述https://ost.51cto.com/posts/17088
Module 允许 Flink 扩展函数能力。它是可插拔的,Flink 官方本身已经提供了一些 Module,用户也可以编写自己的 Module。
例如,用户可以定义自己的函数,并将其作为加载进入 Flink,以在 Flink SQL 和 Table API 中使用。
再举一个例子,用户可以加载官方已经提供的的 Hive Module,将 Hive 已有的内置函数作为 Flink 的内置函数。
目前 Flink 包含了以下三种 Module:
⭐ CoreModule:CoreModule 是 Flink 内置的 Module,其包含了目前 Flink 内置的所有 UDF,Flink 默认开启的 Module 就是 CoreModule,我们可以直接使用其中的 UDF
⭐ HiveModule:HiveModule 可以将 Hive 内置函数作为 Flink 的系统函数提供给 SQL\Table API 用户进行使用,比如 get_json_object 这类 Hive 内置函数(Flink 默认的 Co ...
Flink-源码学习-FlinkSQL&Table-Planner-Parser 模块-CalciteParser
一、概述对于标准的 SQL 语句, ExtendedParser 不会去解析它。标准 SQL 的解析过程由 CalciteParser 负责。
二、实现
Flink-源码学习-FlinkSQL&Table-Planner-Parser 模块-ExtendedParser
一、概述ExtendedParser 用于在不增加 CalciteParser 复杂性的前提下(不用修改Calcite,增加新的关键字),让 Flink SQL 支持更多专用的语法。
二、实现2.1. 策略https://www.jianshu.com/p/e4956652cfcb
ExtendedParser 包含如下解析策略:
1234567private static final List<ExtendedParseStrategy> PARSE_STRATEGIES = Arrays.asList( ClearOperationParseStrategy.INSTANCE, HelpOperationParseStrategy.INSTANCE, QuitOperationParseStrategy.INSTANCE, ResetOperationParseStrategy.INSTANCE, Se ...