Calcite - StreamingSQL】的更多相关文章

https://calcite.apache.org/docs/stream.html   Calcite's SQL is an extension to standard SQL, not another 'SQL-like' language. The distinction is important, for several reasons: Streaming SQL is easy to learn for anyone who knows regular SQL. The sema…
Apache Calcite是面向Hadoop新的查询引擎,它提供了标准的SQL语言.多种查询优化和连接各种数据源的能力,除此之外,Calcite还提供了OLAP和流处理的查询引擎.Calcite之前的名称叫做optiq,optiq起初在Hive项目中,为Hive提供基于成本模型的优化.2014年5月optiq独立出来,成为Apache社区的孵化项目,2014年9月正式更名为Calcite.Calcite项目的创建者是Julian Hyde, 他在数据平台上有非常多的工作经历,曾经是Oracle…
https://blog.csdn.net/yunlong34574/article/details/46375733 https://cloud.tencent.com/developer/article/1243475 https://www.slideshare.net/JordanHalterman/introduction-to-apache-calcite https://blog.csdn.net/yunlong34574/article/details/46375733 http…
http://vinoyang.com/2017/06/12/flink-table-sql-source/ Flink Table&Sql 如何结合Apache Calcite http://ju.outofmemory.cn/entry/335371 http://wuchong.me/blog/2017/03/30/flink-internals-table-and-sql-api/ Stream Processing for Everyone with SQL and Apache Fl…
前言 calcite是一个可以将任意数据查询转换成基于sql查询的引擎,引擎特性也有很多,比如支持sql树的解析,udf的扩展,sql执行优化器的扩展等等.目前已经被很多顶级apache项目引用,比如hive,kylin等.在这个SQL作为主流的数据查询语言大数据世界里,calcite的作用会越来越大. 理解calcite的核心流程 如图1所示.calcite核心步骤有两个,数据关系化, SQL解析执行. 图1 calcite核心流程 数据协议关系化 要想使用sql进行查询,首先要把非结构化数据…
Apache Calcite是什么东东 Apache Calcite面向Hadoop新的sql引擎,它提供了标准的SQL语言.多种查询优化和连接各种数据源的能力.除此之外,Calcite还提供了OLAP和流处理的查询引擎.它2013年成为了Apache孵化项目以来,在Hadoop中越来越引人注目,并被众多项目集成.比如Flink/Storm/Drill/Phoenix都依赖它做sql解析和优化. Flink 结合 Calcite Flink Table API&SQL 为流式数据和静态数据的关系…
什么是Calcite Apache Calcite是一个动态数据管理框架,它具备很多典型数据库管理系统的功能,比如SQL解析.SQL校验.SQL查询优化.SQL生成以及数据连接查询等,但是又省略了一些关键的功能,比如Calcite并不存储相关的元数据和基本数据,不完全包含相关处理数据的算法等. 也正是因为Calcite本身与数据存储和处理的逻辑无关,所以这让它成为与多个数据存储位置(数据源)和多种数据处理引擎之间进行调解的绝佳选择. Calcite所做的工作就是将各种SQL语句解析成抽象语法树(…
文章导读: 什么是Calcite? Calcite的主要功能? 如何快速使用Calcite? 什么是Calcite Apache Calcite是一个动态数据管理框架,它具备很多典型数据库管理系统的功能,比如SQL解析.SQL校验.SQL查询优化.SQL生成以及数据连接查询等,但是又省略了一些关键的功能,比如Calcite并不存储相关的元数据和基本数据,不完全包含相关处理数据的算法等. 也正是因为Calcite本身与数据存储和处理的逻辑无关,所以这让它成为与多个数据存储位置(数据源)和多种数据处…
RelTrait 表示RelNode的物理属性 由RelTraitDef代表RelTrait的类型 /** * RelTrait represents the manifestation of a relational expression trait within * a trait definition. For example, a {@code CallingConvention.JAVA} is a trait * of the {@link ConventionTraitDef} t…
Calcite源码分析,参考: http://matt33.com/2019/03/07/apache-calcite-process-flow/ https://matt33.com/2019/03/17/apache-calcite-planner/ Rule作为Calcite查询优化的核心, 具体看几个有代表性的Rule,看看是如何实现的 最简单的例子,Join结合律,JoinAssociateRule 首先所有的Rule都继承RelOptRule类 /** * Planner rule…
摘要:2019大数据技术公开课第一季<技术人生专访>,来自阿里云计算平台事业部高级开发工程师雷春蔚向大家讲述了MaxCompute 与 Calcite 的技术和故事. 具体内容包括: 1) 什么是查询优化器:2)MaxCompute查询优化器的具体实践:3)MaxCompute后续计划:4)从校招到阿里巴巴工程师到Calcite committer,他经历了怎样的个人成长. 以下内容根据演讲视频以及PPT整理而成. 一.查询优化器简介 大家都知道,数据库一般由三部分组成,分别是解析器.优化器和…
摘要: 什么是Apache ORC开源项目?主流的开源列存格式ORC和Parquet有何区别?MaxCompute为什么选择ORC? 如何一步步成为committer和加入PMC的?在阿里和Uber总部的工作体验有何异同?中美两种互联网公司的文化有什么差别?尽在本次直播. 2019年5月,大数据计算技术公开课又开播啦!! 第一季<技术人生专访>,将带领开发者们从Apache ORC 到 Apache Calcite探讨大数据技术,从中美日看不同公司的工作经历和体验. [直播详情] 吴刚专访 &…
需求分析:(用其它方法替代metabase中的某些功能)功能1.通过对sql查询语句的分析,得到所有表名,以及所有表的字段名,字段类型,字段注解信息.功能2.在sql语句执行查询前,校验sql语句是否正确,得到校验后的错误信息. 带着这个需求,我去学习并测试了jsqlparser和calcite和以及druid的相关功能,并在这里记录自己测试的结果(该结果只针对sql查询语句的解析) jsqlparser:上手容易,操作简单,只能对sql语句进行拆分解析,和数据库无关.calcite:功能强大,…
目录 Calcite简介与CBO介绍 Calcite背景与介绍 SQL优化与CBO Calcite优化器 HepPlanner优化器与VolcanoPlanner优化器 Calcite优化样例代码介绍 前阵子工作上需要用到Calcite做一些事情,然后发现这个东西也是蛮有意思的,就花了些时间研究了一下.本篇主要围绕SQL 优化这块来介绍Calcite,后面会介绍Hive如何Calcite进行SQL的优化. 此外,也将Calcite的一些使用样例整理成到github,https://github.…
目录 Hive SQL执行流程 Hive debug简单介绍 Hive SQL执行流程 Hive 使用Calcite优化 Hive Calcite优化流程 Hive Calcite使用细则 Hive向Calcite提供元数据 上一篇主要对Calcite的背景,技术特点,SQL的RBO和CBO等做了一个初步的介绍.深入浅出Calcite与SQL CBO(Cost-Based Optimizer)优化 这一篇会从Hive入手,介绍Hive如何使用Calcite来优化自己的SQL,主要从源码的角度进行…
特别声明:本文来源于掘金,"预留"发表的[Apache Calcite 论文学习笔记](https://juejin.im/post/5d2ed6a96fb9a07eea32a6ff) 最近在关注大数据处理的技术和开源产品的实现,发现很多项目中都提到了一个叫 Apache Calcite 的东西.同样的东西一两次见不足为奇,可再三被数据处理领域的各个不同时期的产品提到就必须引起注意了.为此也搜了些资料,关于这个东西的介绍2018 年发表在 SIGMOD 的一篇论文我觉得是拿来入门最合适…
1. 前言 Flink使用Calcite构造SQL引擎,那么他们 是怎么合作的? drill, hive,storm 和其他的一干apache 大数据引擎也用calcite , 那么对于同一个sql 语句(statement) , 无论复杂简单与否,他们和Flink产生的执行计划是不是一样的? 如果不一样, 区别是怎么产生的? 应该在哪里实施优化和发力?优化的手段和原则有那些,等等?   本文不会对calcite 面面做具到的介绍,重点是SQL执行计划的优化框架,流程和策略, 对执行计划进行优化…
是一个动态数据管理框架. 它包含许多组成典型数据库管理系统的部分,但省略了存储原语.它提供了行业标准的SQL解析器和验证器,具有可插入规则和成本函数的可自定义优化器,逻辑和物理代数运算符,从SQL到代数(以及相反)的各种转换. 以上是官方描述,用大白话描述就是,calcite实现了一套标准的sql解析功能,比如实现了标准hive sql的解析,可以避免繁杂且易出错的语法问题.并暴露了相关的扩展接口供用户自定义使用.其提供了逻辑计划修改功能,用户可以实现自己的优化.(害,好像还是很绕!不管了) 1…
Calcite作为大数据领域最常用的SQL解析引擎,支持Flink , hive,  kylin , druid等大型项目的sql解析 同时想要深入研究Flink sql源码的话calcite也是必备技能之一,非常值得学习 我们内部也通过它在做自研的sql引擎,通过一套sql支持关联查询任意多个异构数据源(eg : mysql表join上 hbase表在做一个聚合计算) 因为calcite功能比较多,本文主要还是从calcite重要的主流程源码入手,主要侧重在VolcanoPlanner的优化器…
概述 物化视图和视图类似,反映的是某个查询的结果,但是和视图仅保存SQL定义不同,物化视图本身会存储数据,因此是物化了的视图. 当用户查询的时候,原先创建的物化视图会注册到优化器中,用户的查询命中物化视图后,会直接去物化视图拿数据(缓存),提高运行速度,是典型的空间换时间. 本篇文章会先介绍<Optimizing Queries Using Materialized Views: A Practical, Scalable Solution>如果改写物化视图,接下来会说明 calcite 的物…
敬请期待... http://blog.csdn.net/yu616568/article/details/49915577 https://github.com/terry-chelsea/bigdata…
http://wuchong.me/blog/2017/03/30/flink-internals-table-and-sql-api/ https://cloud.tencent.com/developer/article/1243475…
Phoenix是一个开源的HBase SQL层.它不仅可以使用标准的JDBC API替代HBase Client API创建表,插入和查询HBase,也支持二级索引.事物以及多种SQL层优化. 此系列文章将会从Phoenix的语法和功能特性.相关工具.实践经验以及应用案例多方面从浅入深的阐述.希望对Phoenix入门.在做架构设计和技术选型的同学能有一些帮助. Phoenix从入门到精通: https://yq.aliyun.com/articles/574090 [云数据库 HBase 戳这里…
参考,https://matt33.com/2019/03/17/apache-calcite-planner/ Volcano模型使用,分为下面几个步骤, //1. 初始化 VolcanoPlanner planner = new VolcanoPlanner(); //2.addRelTrait planner.addRelTraitDef(ConventionTraitDef.INSTANCE); planner.addRelTraitDef(RelDistributionTraitDef…
由eBay开源的一个大数据OLAP框架,2014年11月加入了Apache,项目名字也改成了"Apache Kylin",Apache Kylin是唯一来自中国的Apache顶级开源项目,定位于在Hadoop平台之上实现传统数据仓库,商业智能的能力,提供交互式的,多维分析能力,并提供在传统数据仓库技术所不能做到的超大规模数据集的快速查询,并使用普通的PC硬件,而无需采购专用的,私有的一体机或者高端存储等 kylin是一个MOLAP系统,通过预计算的方式缓存了所有 需要查询的的数据结果,…
http://blog.csdn.net/yu616568/article/details/50548967 为什么需要使用视图 Kylin在使用的过程中使用hive作为cube的输入,但是有些情况下,hive中的表定义和数据并不能满足分析的需求,例如有些列的值需要进行处理,有些列的类型不满足需求,甚至有时候在创建hive表时为了图方便,hive中的所有列都被定义成了string,因此很多情况下在使用Kylin之前需要对hive上的数据格式进行适当的修剪,但是使用alter table的方式修改…
http://blog.csdn.net/jiangshouzhuang/article/details/51286150 Hierarchies: 理论上对于N维度,我们可以进行2的N次方的维度组合.然而对于一些维度的组合来说,有时是没有必要的.例如,如果我们有三个维度:continent, country, city,在hierarchies中,最大的维度排在最前面.当使用下钻分析时,我们仅仅需要下面的三个维度的组合:group by continentgroup by continent,…
Where did we come from? With the 0.9.0-milestone1 release, Apache Flink added an API to process relational data with SQL-like expressions called the Table API. The central concept of this API is a Table, a structured data set or stream on which relat…
1.概述 上次给大家分享了关于 Kafka SQL 的实现思路,这次给大家分享如何实现 Kafka SQL.要实现 Kafka SQL,在上一篇<Kafka - SQL 引擎分享>中分享了其实现的思路,核心包含数据源的加载,以及 SQL 树的映射.今天笔者给大家分享相关实现的代码. 2.内容 这里,将数据映射成 SQL Tree 是使用了 Apache Calcite 来承接这部分工作.在实现代码之前,我们首先来了解下 Apache Calcite 的相关内容,Apache Calcite 是…
1.概述 大多数情况下,我们使用 Kafka 只是作为消息处理.在有些情况下,我们需要多次读取 Kafka 集群中的数据.当然,我们可以通过调用 Kafka 的 API 来完成,但是针对不同的业务需求,我们需要去编写不同的接口,在经过编译,打包,发布等一系列流程.最后才能看到我们预想的结果.那么,我们能不能有一种简便的方式去实现这一部分功能,通过编写 SQL 的方式,来可视化我们的结果.今天,笔者给大家分享一些心得,通过使用 SQL 的形式来完成这些需求. 2.内容 实现这些功能,其架构和思路并…