基于Calcite Elasticsearch实现的SQL ON ES方案设想

基于Calcite Elasticsearch实现的SQL  ON ES方案设想

    一、方案的由来
        Elasticsearch是搜索的王者,其强大的DSL不让SQL,但缺少SQL的关键特性,如Join。ES的策略是紧紧拥抱Hadoop/Hive,Spark,有个ES-hadoop方案。Hadoop本身就很笨重,这和轻快的ES是背道而驰的。ES的主要方向目前还在搜索上,SQL也不是它的主要关注点。所以,可预见的一段时间内,SQL on ES只能通过开发或集成第三方软件来完成,如通过Presto或Drill的插件来实现。我们已经测试了Presto Elasticsearch Connector。我们认为,基于插件的方案难以充分发挥ES的性能优势。因此,我们提出了基于Calcite Elasticsearch实现的SQL  ON ES方案设想。
    二、方案论述 
        1、Apache Calcite
        Apache Calcite是面向Hadoop新的查询引擎,它提供了标准的SQL语言、多种查询优化和连接各种数据源的能力,除此之外,Calcite还提供了OLAP和流处理的查询引擎。正是有了这些诸多特性,Calcite项目在Hadoop中越来越引入注目,并被众多项目集成。

        Calcite之前的名称叫做optiq,optiq起初在Hive项目中,为Hive提供基于成本模型的优化,即CBO(Cost Based Optimizatio)。2014年5月optiq独立出来,成为Apache社区的孵化项目,2014年9月正式更名为Calcite。Calcite项目的创建者是Julian Hyde,他在数据平台上有非常多的工作经历,曾经是Oracle、 Broadbase公司SQL引擎的主要开发者、SQLStream公司的创始人和主架构师、Pentaho BI套件中OLAP部分的架构师和主要开发者。现在他在Hortonworks公司负责Calcite项目,其工作经历对Calcite项目有很大的帮助。除了Hortonworks,该项目的代码提交者还有MapR、Salesforce等公司,并且还在不断壮大。

        Calcite的目标是“one size fits all(一种方案适应所有需求场景),希望能为不同计算平台和数据源提供统一的查询引擎,以类似传统数据库的访问方式(SQL和高级查询优化)来访问Hadoop上的数据。

Apache Calcite具有以下几个技术特性

  • 支持标准SQL语言;
  • 独立于编程语言和数据源,可以支持不同的前端和后端;
  • 支持关系代数、可定制的逻辑规划规则和基于成本模型优化的查询引擎;
  • 持物化视图(materialized view)的管理(创建、丢弃、持久化和自动识别);
  • 基于物化视图的Lattice和Tile机制,以应用于OLAP分析;
  • 支持对流数据的查询。

Adapters

        A schema adapter allows Calcite to read particular kind of data, presenting the data as tables within a schema.

    Cassandra adapter (calcite-cassandra)
    CSV adapter (example/csv)
    JDBC adapter (part of calcite-core)
    MongoDB adapter (calcite-mongodb)
    Spark adapter (calcite-spark)
    Splunk adapter (calcite-splunk)
    Eclipse Memory Analyzer (MAT) adapter (mat-calcite-plugin)

calcite-elasticsearch

        https://github.com/LeeBeomYong/calcite-elasticsearch


        2、elasticsearch-sql

        https://github.com/NLPchina/elasticsearch-sql

        3、SQL on Elasticsearch

        参考Calcite-elasticsearch、elasticsearch-sql,利用Elasticsearch插件机制,实现SQL on Elasticsearch方案。这样,在ES上实现了SQL,有以下几点优势:

         简化了系统架构;

         减少了数据在ES和Presto之间的传输时间;

         充分利用了ES的高性能、Calcite强大的SQL和内存列数据能力;

          提供了带有Join能力的ES JDBC Driver

    三、方案验证
        1、验证步骤:
         ES插件开发验证;
         Calcite-elasticsearch Adapter验证;
         SQL on Elasticsearch验证;
         with Join ES JDBC Driver验证

   四、里程碑事件      
         Apache Calcite  1.8.0 / 2016-06-13 Permalink

         这个版本加入了Elasticsearch 和 Druid 适配器,支持ES 2.3.3版本。这进一步增加了SQL on ES方案的可行性。



         方案很美好,是否可行需要验证,验证结果,敬请等待。

你可能感兴趣的:(大数据,SQL,Hadoop,HPLSQL,Presto,bigdata,elasticsearch,facebook,技术心得)