数据库混查 QuickSQL 0.7.0使用初体验

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 数据库混查 QuickSQL 0.7.0使用初体验

本文介绍quicksql0.7.0使用方法,先将安装包qsql-0.7.0-install上传至服务器。

配置运行环境

进入conf目录,修改运行环境配置文件quicksql-env.sh
如下,根据实际情况配置java及spark环境变量

1.    #!/bin/bash    
2.    # This file is sourced when running quicksql programs  
3.    # Copy it as quicksql-env.sh and edit it that to configure quicksql  
4.    # Options read when launching programs  
5.    # export SPARK_HOME=  # [Required] - SPARK_HOME, to set spark home for quicksql running. quicksql needs spark 2.0 or above.  
6.    # export JAVA_HOME=   # [Required] - JAVA_HOME, to set java home for quicksql running. quicksql needs java 1.8 or above.  
7.    #配置java环境变量  
8.    export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera  
9.    #配置spark环境变量  
10.    export SPARK_HOME=/opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/lib/spark  
11.    # export FLINK_HOME=   # [Required] - FLINK_HOME, to set flink home for quicksql running. quicksql needs flink 1.9.0 or  
12.    # above.  
13.    # export QSQL_CLUSTER_URL=  # [Required] - QSQL_CLUSTER_URL, to set hadoop file system url.  
14.    # export QSQL_HDFS_TMP=   # [Required] - QSQL_HDFS_TMP, to set hadoop file system tmp url.  
15.    # Options read when using command line "quicksql.sh -e" with runner "Jdbc", "Spark" or "Dynamic" runner determined that  
16.    # this  
17.    # They all have default values. But we recommend you to set them here for more properly to your site.  
18.    # Those are default value for running a quicksql program if user does not set those properties.  
19.    # export QSQL_DEFAULT_WORKER_NUM=20      # [Optional] - QSQL_DEFAULT_WORKER_NUM, to set default worker_num for quicksql programs. if it is not set, default value is  
20.    # export QSQL_DEFAULT_WORKER_MEMORY=1G   # [Optional] - QSQL_DEFAULT_WORKER_MEMORY, to set default worker_memory for quicksql programs. if it is not set, default  
21.    # export QSQL_DEFAULT_DRIVER_MEMORY=3G   # [Optional] - QSQL_DEFAULT_DRIVER_MEMORY, to set default driver_memory for quicksql programs. if it is not set, default  
22.    # export QSQL_DEFAULT_MASTER=yarn-client # [Optional] - QSQL_DEFAULT_MASTER, to set default master for quicksql programs. if it is not set, default value is  
23.    # export QSQL_DEFAULT_RUNNER=DYNAMIC     # [Optional] - QSQL_DEFAULT_RUNNER, to set default master for quicksql programs. if it is not set, default value is dynamic.  

配置完如下图:
1.png

导入源数据库表结构

quicksql目前支持Hive, MySQL, Kylin, Elasticsearch, Oracle, MongoDB等6种数据源导入,导入时使用bin/metadata-extract.sh脚本,语法如下:

1.    #<SCHEMA-JSON>包含数据源jdbc类型,url,连接账号,密码  
2.    #<DATA-SOURCE>为数据库名称  
3.    #<TABLE-NAME-REGEX>为数据表  
4.    $ ./bin/metadata-extract -p "<SCHEMA-JSON>" -d "<DATA-SOURCE>" -r "<TABLE-NAME-REGEX>"  

其中,-r 参数可以使用LIKE语法,['%': 全部匹配,'_': 占位匹配,'?': 可选匹配])
本文以导入mysql数据和hive数据为例:

导入mysql数据,192.168.112.1:3306地址test数据库的student表

1.    #导入192.168.112.1:3306地址test数据库的student表  
2.    ./metadata-extract.sh -p "{\"jdbcDriver\": \"com.mysql.jdbc.Driver\", \"jdbcUrl\": \"jdbc:mysql://192.168.112.1:3306/test\", \"jdbcUser\": \"root\",\"jdbcPassword\": \"root\"}" -d "mysql" -r "student"  

导入成功如下图:
2.png

导入hive数据,如hive使用mysql作为元数据库,则使用如下语句:

1.    #mysql作为hive元数据,metastore为hive元数据数据库名称,dbName为要导入的业务数据库,studentt_ext为业务数据表,填写正确的数据库连接url,用户名,密码  
2.    ./metadata-extract.sh -p "{\"jdbcDriver\": \"com.mysql.jdbc.Driver\", \"jdbcUrl\": \"jdbc:mysql://192.168.112.180:3306/metastore\", \"jdbcUser\": \"hive\",\"jdbcPassword\": \"123456789\",\"dbName\": \"test2\"}" -d "hive" -r  "student_ext"  

导入成功如下图:
3.png

更多导入JSON如下:


1.    ##MySQL  
2.    {  
3.        "jdbcDriver": "com.mysql.jdbc.Driver",  
4.        "jdbcUrl": "jdbc:mysql://localhost:3306/db",  
5.        "jdbcUser": "USER",  
6.        "jdbcPassword": "PASSWORD"  
7.    }  
8.    ##Oracle  
9.    {  
10.        "jdbcDriver": "oracle.jdbc.driver.OracleDriver",  
11.        "jdbcUrl": "jdbc:oracle:thin:@localhost:1521/namespace",  
12.        "jdbcUser": "USER",  
13.        "jdbcPassword": "PASSWORD"   
14.    }  
15.    ##Elasticsearch  
16.    {  
17.        "esNodes": "192.168.1.1",  
18.        "esPort": "9000",  
19.        "esUser": "USER",  
20.        "esPass": "PASSWORD",  
21.        "esIndex": "index/type"  
22.    }  
23.    ##Hive(Hive元数据存在MySQL中)  
24.    {  
25.        "jdbcDriver": "com.mysql.jdbc.Driver",  
26.        "jdbcUrl": "jdbc:mysql://localhost:3306/db",  
27.        "jdbcUser": "USER",  
28.        "jdbcPassword": "PASSWORD",  
29.        "dbName": "hive_db"  
30.    }  
31.    ##Hive-Jdbc(Hive元数据通过Jdbc访问 )  
32.    {  
33.        "jdbcDriver": "org.apache.hive.jdbc.HiveDriver",  
34.        "jdbcUrl": "jdbc:hive2://localhost:7070/learn_kylin",  
35.        "jdbcUser": "USER",  
36.        "jdbcPassword": "PASSWORD",  
37.        "dbName": "default"  
38.    }  
39.    ##Kylin  
40.    {  
41.        "jdbcDriver": "org.apache.kylin.jdbc.Driver",  
42.        "jdbcUrl": "jdbc:kylin://localhost:7070/learn_kylin",  
43.        "jdbcUser": "ADMIN",  
44.        "jdbcPassword": "KYLIN",  
45.        "dbName": "default"  
46.    }  
47.    ##Mongodb  
48.    {  
49.        "host": "192.168.1.1",  
50.        "port": "27017",  
51.        "dataBaseName": "test",  
52.        "authMechanism": "SCRAM-SHA-1",  
53.        "userName": "admin",  
54.        "password": "admin",  
55.        "collectionName": "products"  
56.    }  

注意:Shell中双引号是特殊字符,传JSON参数时需要做转义!!

Shell脚本实现混查

使用bin/ quicksql.sh脚本进行查询,语法如下:

1.    ./quicksql.sh -e "YOU SQL"; 

查询mysql上的单表 student

1.    ./quicksql.sh -e "select * from student";  

查询结果如下图:
4.png

查询hive上的单表 student_ext

1.    ./quicksql.sh -e "select * from student_ext";  

5.png

两表left join 混查:

1.    ./quicksql.sh -e "select * from student as a left join student_ext as b on a.id = b.id"; 

查询结果:
6.png

使用java编写程序实现客户端JDBC调用

启动quicksql-server服务,运行 bin/quicksql-server.sh

1.    ./quicksql-server.sh start  

启动成功如下图:
1.png

通讯端口为5888,也可使用./quicksql-server.sh start | restart | status | stop 进行进行其他操作。

编写java程序,引入依赖

1.    #qsql-client通过本地方式引用,qsql-client-0.7.0.jar文件可从qsql-0.7.0-install/lib下复制过来  
2.    <dependency>  
3.          <groupId>com.qihoo.qsql</groupId>  
4.          <artifactId>qsql</artifactId>  
5.          <version>0.7.0</version>  
6.          <scope>system</scope>  
7.          <systemPath>${project.basedir}/qsql-client-0.7.0.jar</systemPath>  
8.    </dependency>  
9.    <dependency>  
10.          <groupId>org.apache.calcite.avatica</groupId>  
11.          <artifactId>avatica-server</artifactId>  
12.          <version>1.12.0</version>  
13.    </dependency>  

如下图:
2.png

jdbc连接地址按实际情况配置。

运行结果如下:
3.png

相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
Oracle 关系型数据库 网络安全
崖山异构数据库迁移利器YMP初体验-Oracle迁移YashanDB
文章是作者小草对崖山异构数据库迁移利器 YMP 的初体验分享,包括背景、YMP 简介、体验环境说明、YMP 部署(含安装前准备、安装、卸载、启动与停止)、数据迁移及遇到的问题与解决过程。重点介绍了 YMP 功能、部署的诸多细节和数据迁移流程,还提到了安装和迁移中遇到的问题及解决办法。
|
监控 关系型数据库 MySQL
初体验:数据库监控、管理和可观测性工具(PMM)
Percona Monitoring and Management (PMM) 是一个开源工具,用于监控MySQL、PostgreSQL和MongoDB的性能。它提供实时监控、数据可视化、故障排除和管理功能,支持本地和云端数据库。要安装PMM,首先需安装Docker,然后通过提供的脚本部署PMM服务器和客户端。在MySQL服务器上创建PMM用户后,使用`pmm-admin`命令添加数据库。访问PMM的HTTPS网址(默认用户名和密码为admin)进行配置。本文还包含了安装Docker和PMM的命令行步骤。
初体验:数据库监控、管理和可观测性工具(PMM)
|
分布式计算 NoSQL 数据可视化
图数据库HugeGraph:HugeGraph-Hubble基于Web的可视化图管理初体验
图数据库HugeGraph:HugeGraph-Hubble基于Web的可视化图管理初体验
540 0
|
弹性计算 关系型数据库 MySQL
基于ECS和云数据库RDS MySQL Serverless快速搭建个人博客初体验
通过安装Apache+PHP+WordPress网站环境,并结合RDS MySQL版数据库实例,快速搭建自己的云上博客。
605 2
|
SQL 关系型数据库 MySQL
阿里云分析型数据库MySQL版(AnalyticDB)测试初体验(2)
阿里云分析型数据库MySQL版(AnalyticDB)测试初体验
229 0
阿里云分析型数据库MySQL版(AnalyticDB)测试初体验(2)
|
SQL 存储 关系型数据库
阿里云分析型数据库MySQL版(AnalyticDB)测试初体验(1)
阿里云分析型数据库MySQL版(AnalyticDB)测试初体验
459 0
阿里云分析型数据库MySQL版(AnalyticDB)测试初体验(1)
|
SQL NoSQL Java
与图数据库、Gremlin语言的邂逅 -- 初体验
Gremlin语言是图数据库最主流的查询语言,是Apache TinkerPop框架下规范的图语言,相当于SQL之于关系型数据库。
与图数据库、Gremlin语言的邂逅 -- 初体验
|
SQL 关系型数据库 MySQL
阿里云分析型数据库MySQL版(AnalyticDB)测试初体验(2)
阿里云分析型数据库MySQL版(AnalyticDB)测试初体验
阿里云分析型数据库MySQL版(AnalyticDB)测试初体验(2)
|
SQL 存储 关系型数据库
阿里云分析型数据库MySQL版(AnalyticDB)测试初体验(1)
阿里云分析型数据库MySQL版(AnalyticDB)测试初体验
阿里云分析型数据库MySQL版(AnalyticDB)测试初体验(1)
|
Linux 数据库 Windows
云数据库初体验
第一次使用云服务器的感受