跨数据源统一 SQL 查询引擎 Quicksql

QSQL是以SQL进行单一、混合查询的一款产品。QSQL支持标准SQL语言(SQL-2003);QSQL支持查询关系型数据库、NoSQL式数据库、原生不支持SQL查询的存储(如ES、Druid),及借助中间计算引擎实现混合查询。QSQL最大的特点是独立于计算引擎、存储引擎本身,如此用户只需要关注于QSQL语法以及数据本身,就可完成数据计算、统计以及分析。

架构设计

跨数据源统一 SQL 查询引擎 Quicksql

QSQL包含三层结构:

  • 语法解析层:负责SQL语句的解析、校验、优化、混算SQL的切分以及最终生成Query Plan;
  • 计算引擎层:负责Query Plan路由到具体的执行计划中,将Query Plan解释为具体的执行引擎可识别的语言;
  • 数据存储层:负责数据的提取、存储;

编译&部署

1 编译环境依赖

  • java >= 1.8
  • scala >= 2.11
  • maven >= 3.3

2 编译步骤

在源码根目录下,执行:

mvn -DskipTests clean package

编译成功后执行:

ls ./target/

在./target/目录下,会生成发布包 qsql-0.5.tar.gz。

3 部署环境依赖

  • CentOS 6.2
  • java >= 1.8
  • scala >= 2.11
  • spark >= 2.2
  • [可选] 目前QSQL支持的存储引擎MySQL、Elasticsearch、Hive、Druid

4 客户端部署

在客户端解压缩发布包 qsql-0.5.tar.gz

tar -zxvf ./qsql-0.5.tar.gz

建立软链

ln -s qsql-0.5/ qsql

该发布包解压后的主要目录结构如下:

  • bin:脚本目录
  • conf:配置文件
  • data:存放测试数据
  • lib:依赖jar包
  • metastore:元数据管理

在QSQL发布包$QSQL_HOME/conf目录中,分别配置如下文件:

  • base-env.sh:设置相关环境变量,如:
  • JAVA_HOME
  • SPARK_HOME
  • QSQL_CLUSTER_URL
  • QSQL_HDFS_TMP
  • qsql-runner.properties:设置系统参数
  • log4j.properties:设置日志级别

运行示例

QSQL Shell

./bin/qsql -e "select 1"

详情:English|中文

示例程序

QSQL附带了示例目录中的几个示例程序。要运行其中一个,使用./run-example [params]。例如:

内存表数据:

./bin/run-example com.qihoo.qsql.CsvScanExample

Hive join MySQL:

./bin/run-example com.qihoo.qsql.CsvJoinWithEsExample

注意

./run-example <com.qihoo.qsql.CsvJoinWithEsExample>

运行混算,请确保当前客户端存在Spark、Hive、MySQL环境。并且将Hive与MySQL的连接信息添加到元数据管理中。