更新时间:2024-06-07 GMT+08:00

SQL on Hadoop

DWS支持直接读取存储在Hadoop HDFS文件系统上的结构化数据,对外提供标准SQL语言查询接口,通过向量化引擎完成Hadoop原生数据的复杂分析查询工作。

技术架构

DWS将HDFS上存储的结构化数据映射为外部表,从而重用已有的成熟数据库SQL编译器和向量化执行引擎,对外提供标准SQL接口,完成HDFS上Hadoop原生数据的分析查询。

DWS的SQL编译器中引入了新的Scheduler(调度器)组件。在SQL编译时,如果有针对HDFS外表的访问,Scheduler组件会访问HDFS Name Node元数据信息,获得外表文件在HDFS上的存储路径。CN的SQL引擎在编译查询语句时,将会调用Scheduler获得并指定每个DN将要访问的HDFS文件的具体路径。

HDFS外表数据文件在DN间的分配原则是:

  • 首先以本地读为主任务分配策略。
  • 其次考虑DN之间的任务负载均衡。
图1 逻辑架构

技术特点

  • 支持标准SQL查询语法

    完全继承GaussDB(DWS)的SQL查询语法的支持,实现HDFS分布式文件系统上的结构化数据分析查询,支持连接、聚合、字符日期等系统函数,支持子查询以及HDFS结构化数据和GaussDB(DWS)本地数据的联合访问,支持窗口函数等。

  • 针对HDFS数据的代价估算模型

    GaussDB(DWS)基于代价估算(Cost-based)的SQL优化器中,增加了针对HDFS分布式文件系统上结构化数据访问的代价估算模型,从而可以制定HDFS数据的最优执行计划。

  • 智能扫描

    GaussDB(DWS)可以将适用的谓词条件直接下推到存储在HDFS上的Hadoop原生数据上,在压缩数据上进行谓词过滤,且针对Hadoop ORC(Optimized Row Columnar)列式存储实现后期物化(Late-materialization),从而显著减少HDFS数据读取。

  • LLVM(Low Level Virtual Machine)优化

    基于智能扫描,将下推到Hadoop原生数据上的适用谓词进行LLVM优化,使其谓词条件生成中间表示IR,最终生成与平台相关的机器码,进而提高谓词过滤及查询性能。

  • 支持信息约束(Informational Constraint)

    若表上的列具有唯一性特征,则在数据库中创建该表时指定对应列具有信息约束属性,在执行阶段利用该属性提供查询性能。

  • 向量引擎

    针对HDFS上存储的ORC列式结构化数据,直接对接GaussDB(DWS)已有成熟的向量化执行引擎,提升分析查询性能。

  • 支持分区表

    适配HDFS上依据Hive语法定义的分区表数据,由GaussDB(DWS) SQL优化器来实现自动的分区表访问的剪枝操作,提高分析查询性能。

  • 分布式高效读取HDFS数据

    GaussDB(DWS) SQL编译器引入Scheduler组件,来达到GaussDB(DWS) Data Nodes的HDFS数据访问负载均衡,并可以通过HDFS组件的本地读特性(short-circuit)来提升数据读取性能。

    了解更多:请参见CREATE FOREIGN TABLE (SQL on Hadoop or OBS)