微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Quicksql 1 编译环境依赖2 编译步骤3 部署环境依赖4 客户端部署QSQL Shell示例程序环境变量参数配置表结构内置SQLite数据库外部MySQL数据库 跨数据源统一 SQL 查询引擎

程序名称:Quicksql 1 编译环境依赖2 编译步骤3 部署环境依赖4 客户端部署QSQL Shell示例程序环境变量参数配置表结构内置SQLite数据库外部MySQL数据库

授权协议: MIT

操作系统: 跨平台

开发语言: Java

Quicksql 1 编译环境依赖2 编译步骤3 部署环境依赖4 客户端部署QSQL Shell示例程序环境变量参数配置表结构内置SQLite数据库外部MySQL数据库 介绍

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

架构设计

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

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

在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的连接信息添加到元数据管理中。

详情:English|中文

参数配置

环境变量

Property Name Meaning
JAVA_HOME Java的安装路径
SPARK_HOME Spark的安装路径
Qsql_CLUSTER_URL Hadoop集群的路径
Qsql_HDFS_TMP 设置临时目录路径
Qsql_DEFAULT_WORKER_NUM 设置初始化的Worker数量
Qsql_DEFAULT_WORKER_MEMORY 设置每个Worker分配的内存
Qsql_DEFAULT_DRIVER_MEMORY 设置Driver端分配的内存
Qsql_DEFAULT_MASTER 设置运行时的集群模式
Qsql_DEFAULT_RUNNER 设置运行时的执行计划

参数配置

Property Name Default Meaning
spark.sql.hive.metastore.jars builtin Spark sql链接hive需要的jar包
spark.sql.hive.metastore.version 1.2.1 Spark sql链接hive的版本信息
spark.local.dir /tmp Spark执行过程中的临时文件存放路径
spark.driver.userClasspathFirst true Spark执行过程中,用户jar包优先加载
spark.sql.broadcastTimeout 300 Spark广播的超时时间
spark.sql.crossJoin.enabled true Spark sql开启cross join
spark.speculation true Spark开启任务推测执行
spark.sql.files.maxPartitionBytes 134217728(128MB) Spark读取文件时单个分区的最大字节数
Property Name Default Meaning
Meta.storage.mode intern 元数据存储模式,intern:读取内置sqlite数据库中存储的元数据,extern:读取外部数据库中存储的元数据。
Meta.intern.schema.dir ../metastore/schema.db 内置数据库的路径
Meta.extern.schema.driver (none) 外部数据库的驱动
Meta.extern.schema.url (none) 外部数据库链接
Meta.extern.schema.user (none) 外部数据库用户名
Meta.extern.schema.password (none) 外部数据库密码

元数据管理

表结构

表字段 说明 示例数据
DB_ID 数据库ID 1
DESC 数据库描述 es 索引
NAME 数据库 es_profile_index
DB_TYPE 数据库类型 es、hive、MysqL
表字段 说明 示例数据
DB_ID 数据库ID 1
ParaM_KEY 参数名 UserName
ParaM_VALUE 参数值 root
表字段 说明 示例数据
TBL_ID 表ID 101
CREATED_TIME 创建时间 2018-10-22 14:36:10
DB_ID 数据库ID 1
TBL_NAME 表名 student
表字段 说明 示例数据
CD_ID 字段信息ID 10101
COMMENT 字段注释 学生姓名
COLUMN_NAME 字段名 name
TYPE_NAME 字段类型 varchar
INTEGER_IDX 字段顺序 1

内置sqlite数据库

在Qsql发布包$Qsql_HOME/metastore目录中,存在如下文件

通过sqlite3连接到schema.db数据库,并操作元数据表

sqlite3 ../schema.db

外部MysqL数据库

修改内嵌的sqlite数据为MysqL数据库

vim Metadata.properties
> Meta.storage.mode=extern
> Meta.extern.schema.driver    = com.MysqL.jdbc.Driver
> Meta.extern.schema.url       = jdbc:MysqL://ip:port/db?useUnicode=true
> Meta.extern.schema.user      = YourName
> Meta.extern.schema.password  = YourPassword

初始化示例数据到MysqL数据库

cd $Qsql_HOME/bin/
./Metadata --dbType MysqL --action init

Quicksql 1 编译环境依赖2 编译步骤3 部署环境依赖4 客户端部署QSQL Shell示例程序环境变量参数配置表结构内置SQLite数据库外部MySQL数据库 官网

https://github.com/Qihoo360/Quicksql

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐