MySQL是一个关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL是XSQL支持的数据源之一。本节将对MySQL接入XSQL的安装、配置、运行作简单的介绍。

Installation

​ XSQL通过JDBC访问MySQL数据库,所以不需要任何安装。对于想要了解MySQL的用户请查阅MySQL官网

MySQL Configuration

MySQL参数配置继承自XSQL,通用的配置信息请查看Configurations,以下表中为MySQL独有的配置:

Property Name Default Meaning
spark.xsql.datasource.$dataSource.partitionConf None 在非下推情况下用于指定MySQL数据源的Database中Table的分区信息
spark.xsql.datasource.$dataSource.showSchemaDatabase false 用于控制是否显示MySQL自带的信息数据库information_schema.默认为不显示
spark.xsql.datasource.$dataSource.pushdown.considerRows true 在设置数据源下推的情况下,用于控制是否根据表的行数(表的行数从information_schema库中获取,为近似值)来决定下推执行。
spark.xsql.datasource.$dataSource.pushdown.considerIndex true 在设置数据源下推的情况下,用于控制是否根据表的索引信息来决定下推执行。目前仅用于多表连接的情况。

这里给出一个MySQL接入XSQL的配置示例:

spark.xsql.datasources                   mysql
spark.xsql.default.datasource            mysql
spark.xsql.default.database              mysqltest

spark.xsql.datasource.mysql.type         mysql
spark.xsql.datasource.mysql.url          jdbc:mysql://10.142.97.177:2336
spark.xsql.datasource.mysql.user         mysqltest
spark.xsql.datasource.mysql.password     37ec19604101cd8a
spark.xsql.datasource.mysql.version      5.6.19
spark.xsql.datasource.mysql.pushdown       true
spark.xsql.datasource.mysql.isShowSchemaDatabase  false
spark.xsql.datasource.mysql.partitionConf  mysql-tablePartition.conf
spark.xsql.datasource.mysql.whitelist      mysql-whitelist.json

partitionConf

表格的分区信息是通过json格式的配置文件进行配置的,这里给出一个简单的mysql-tablePartition.conf的配置内容。建议在编辑该conf文件时使用 JSON编辑器 避免低级错误。

{
  "mysqltest":[
    { "table":"geonames",
      "partitionColumn":"id",
      "lowerBound":"38225",
      "upperBound":"11903131",
      "numPartitions":"10"
    }
  ]
}

以上例子中,mysqltest为数据库名,用户可在此位置自行指定自己的数据库名。以下表格为分区信息的各字段的具体说明:

Name Meaning
table 表名
partitionColumn 用于分区的列名,一般最好是表的索引字段,且要求为字段类型为数字,并最好是连续的,这样分区才不会数据倾斜
lowerBound 用于分区的列的下限
upperBound 用于分区的列的上限
numPartitions 分区数,数值应该小于等于upperBound-lowerBound

Note

目前仅支持partitionColumn的数据类型为long型,lowerBound和upperBound的值可自行查询数据库。如有分区列为其他类型的需要,请联系开发人员。

Execution

​ MySQL接入XSQL支持Common Commands中介绍的通用原则。在XSQL中创建、删除、修改MySQL表的方式与直接在MySQL中的操作方式相同,但要注意的一点是创建表时需要在末尾加上using mysql来申明创建的是MySQL数据源的table。以下分别为XSQL中MySQL数据源实现的DDL的示例:

Create MySQL table

CREATE TABLE [IF NOT EXISTS] [db_name.]table_name(
    `col0` int not null auto_increment PRIMARY KEY,
    `col1` varchar(255),
    ...
    ) USING mysql

Drop table if exists

DROP TABLE IF EXISTS mysqltest.test1

Alter table add/drop/change columns

# 添加表字段
ALTER TABLE mysqltest.test1 ADD(`col2` datetime,`col3` bigint DEFAULT 0)
# 修改表字段
ALTER TABLE mysqltest.test1 CHANGE `col3` `col4` int
# 删除表字段
ALTER TABLE mysqltest.test1 DROP column `col2`,DROP `col3

Rename table

# 方式一
ALTER TABLE mysqltest.test1 RENAME TO test2
# 方式二
RENAME TABLE Mysqltest.test1 TO test2