java跨数据库查询_Quicksql
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.。
3 部署环境依赖
CentOS 6.2
java >= 1.8
scala >= 2.11
spark >= 2.2
[可选] ⽬前QSQL⽀持的存储引擎MySQL、Elasticsearch、Hive、Druid
4 客户端部署
mysql下载jar包在客户端解压缩发布包 qsql-0.
tar -zxvf ./qsql-0.
建⽴软链
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"
⽰例程序
QSQL附带了⽰例⽬录中的⼏个⽰例程序。要运⾏其中⼀个,使⽤./run-example [params]。例如:内存表数据:
./bin/run-example com.qihoo.qsql.CsvScanExample
Hive join MySQL:
./bin/run-example com.qihoo.qsql.CsvJoinWithEsExample
./run-example
运⾏混算,请确保当前客户端存在Spark、Hive、MySQL环境。并且将Hive与MySQL的连接信息添加到元数据管理中。参数配置
环境变量
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.astore.jars
builtin
Spark Sql链接hive需要的jar包
spark.astore.version
Spark Sql链接hive的版本信息
spark.local.dir
/tmp
Spark执⾏过程中的临时⽂件存放路径
spark.driver.userClassPathFirst
true
Spark执⾏过程中,⽤户jar包优先加载
spark.sql.broadcastTimeout
300
Spark⼴播的超时时间
abled
true
Spark Sql开启cross join
spark.speculation
true
Spark开启任务推测执⾏
spark.sql.files.maxPartitionBytes
134217728(128MB)
Spark读取⽂件时单个分区的最⼤字节数
元数据参数
Property Name
Default
Meaning
de
intern
元数据存储模式,intern:读取内置sqlite数据库中存储的元数据,extern:读取外部数据库中存储的元数据。meta.intern.schema.dir
../metastore/schema.db
内置数据库的路径
(none)
外部数据库的驱动
外部数据库的链接
外部数据库的⽤户名
外部数据库的密码
元数据管理
表结构
DBS
表字段
说明
⽰例数据
DB_ID
数据库ID
1
DESC
数据库描述
es 索引
NAME
数据库名
es_profile_index
DB_TYPE
数据库类型
es、hive、mysql
DATABASE_PARAMS
表字段
说明
⽰例数据
DB_ID
数据库ID
1
PARAM_KEY

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。