添加GAUSSDB数据源
本章节指导用户在HSConsole界面添加GaussDB类型的JDBC数据源。
添加GAUSSDB数据源前提条件
- 数据源所在集群与HetuEngine集群节点网络互通。
- 在HetuEngine所在集群的所有节点的“/etc/hosts”文件中,添加待对接数据源所在集群的主机名称和对应的IP映射,及其“/etc/hosts”文件中的“10.10.10.10 hadoop.系统域名”(如“10.10.10.10 hadoop.hadoop.com”),否则HetuEngine无法根据主机名称连接到非本集群节点。
- 已创建HetuEngine计算实例。
添加GAUSSDB数据源步骤
- 使用HetuEngine管理员用户登录FusionInsight Manager,选择“集群 > 服务 > HetuEngine”,进入HetuEngine服务页面。
- 在“概览”页签下的“基本信息”区域,单击“HSConsole WebUI”后的链接,进入HSConsole界面。
- 选择“数据源”,单击“添加数据源”。在“添加数据源”页面填写参数。
- 配置“基本配置”,填写数据源名称,选择数据源类型“JDBC > GAUSSDB-A”。
- 配置“GAUSSDB-A配置”,参数配置请参考表1。
- (可选)配置GaussDB用户信息,参考表2。
“GaussDB用户信息配置”与“HetuEngine-GaussDB用户映射配置”要搭配使用,HetuEngine在对接的GaussDB数据源时,通过用户映射,使得HetuEngine的用户具备与GaussDB数据源被映射的用户访问GaussDB数据源时同样的权限。可以多个HetuEngine用户对应一个GaussDB用户。
在 GaussDB数据库中,创建的用户名要符合标识符的命名规范,且最大长度不超过63个字符。当用户名中包含大写字母时数据库将自动转换为小写字母,如果需要创建包含大写字母的用户名则需要使用双引号括起来。因此,配置“Data Source User”时,必须使用GaussDB数据库转换后的用户名。
例如:
- 在 GaussDB数据库创建的用户名为Gaussuser1,则Data Source User应为gaussuser1。
- 在 GaussDB数据库创建的用户名为“Gaussuser1”,则Data Source User应为Gaussuser1。
- (可选)配置 HetuEngine-GaussDB用户映射配置,参考表4 HetuEngine-GaussDB用户映射配置。
以HetuEngine User和Data Source User键值对的形式配置多个HetuEngine的用户对应上面多个用户的其中一个。当使用不同的HetuEngine用户访问GaussDB时,可对应用不同的GaussDB的用户和密码。
表3 HetuEngine-GaussDB用户映射配置 名称
描述
HetuEngine User
HetuEngine用户名。
Data Source User
数据源用户,如gaussuser1(表2中配置的数据源用户)。
- (可选)自定义配置。
- 单击“增加”可以增加自定义配置参数。配置GaussDB数据源自定义参数,参考表4。
表4 GaussDB数据源自定义配置参数 名称
描述
取值样例
use-connection-pool
是否使用JDBC连接池
true
jdbc.connection.pool.maxTotal
JDBC连接池中最大连接数
8
jdbc.connection.pool.maxIdle
JDBC连接池中最大空闲连接数
8
jdbc.connection.pool.minIdle
JDBC连接池中最小空闲连接数
0
join-pushdown.enabled
- true:允许将Join下推到数据源执行
- false: Join不会被下推到数据源执行,因此会消耗更多的网络和计算资源
true
join-pushdown.strategy
前提条件:Join下推功能已开启
- AUTOMATIC:基于代价估算(cost-based)的Join下推
- EAGER:尽可能的Join下推
AUTOMATIC
source-encoding
GaussDB数据源编码方式
UTF-8
multiple-cnn-enabled
是否使用GaussDB多CN配置。如果使用,首先确保关闭JDBC连接池功能,其次JDBC URL格式为:jdbc:postgresql://host:port/database,jdbc:postgresql://host:port/database,jdbc:postgresql://host:port/database
false
parallel-read-enabled
是否使用并行数据读取功能
启用并行数据读取功能将基于节点分布和“max-splits”参数值来确定实际的split数。
并行读取将与数据源创建多个连接,被依赖的数据源应当具备支持负载的能力。
false
split-type
并行数据读取类型
- NODE:基于GaussDB数据源DN节点划分并行度
- PARTITION:基于表分区划分并行度
- INDEX:基于表索引划分并行度
NODE
max-splits
最大并行度
5
use-copymanager-for-insert
数据写入时是否使用CopyManager批量导入功能
false
unsupported-type-handling
当连接器不支持此数据类型时,可以转换为VARCHAR,从而避免失败
- CONVERT_TO_VARCHAR:不支持的类型将转为VARCHAR类型,并且只支持对它们的读操作,不支持的类型包括:BIT VARYING、CIDR、MACADDR、INET、OID、REGTYPE、REGCONFIG、POINT
- IGNORE(默认值):不支持的类型将不在查询结果中显示
CONVERT_TO_VARCHAR
max-bytes-in-a-batch-for-copymanager-in-mb
CopyManager批量导入每一批次最大数据量,单位:MB
10
decimal-mapping
默认情况下HetuEngine会跳过未指定精度或超过最大精度38位的Decimal/Number/Numeric数据类型,通过设置“decimal-mapping=allow_overflow”,将其映射为Decimal(38,x)数据类型,x值为decimal-default-scale的值
allow_overflow
decimal-default-scale
Decimal/Number/Numeric映射数据类型Decimal(38,x)小数位精度值,取值范围0~38,默认为0
0
case-insensitive-name-matching
HetuEngine支持的GAUSSDB数据源的Schema和Table名称大小写格式敏感。
- false:仅支持查询全小写的Schema或Table。默认值为false。
- true:
- 忽略大小写后无同名的Schema或Table:支持查询该Schema或Table。
- 忽略大小写后存在同名的Schema或Table:不支持查询该Schema或Table。
false
- 单击“删除”可以删除已增加的自定义配置参数。
- 单击“增加”可以增加自定义配置参数。配置GaussDB数据源自定义参数,参考表4。
- 单击“确定”。
- 登录集群客户端所在节点,执行以下命令,切换到客户端安装目录并认证用户。
cd /opt/client
source bigdata_env
kinit HetuEngine组件操作用户 (普通模式集群跳过)
- 执行以下命令,登录数据源的catalog。
hetu-cli --catalog 数据源名称 --schema 数据库名
例如执行以下命令:
hetu-cli --catalog gaussdb_1 --schema admin
- 执行以下命令,可正常查看数据库表信息或不报错即表示连接成功。
show tables;
GAUSSDB数据类型映射
GAUSSDB数据类型(data type) |
HetuEngine数据类型(data type) |
---|---|
BOOLEAN |
BOOLEAN |
TINYINT |
TINYINT |
SMALLINT |
SMALLINT |
INTEGER |
INTEGER |
BINARY_INTEGER |
INTEGER |
BIGINT |
BIGINT |
SMALLSERIAL |
SMALLINT |
SERIAL |
INTEGER |
BIGSERIAL |
BIGINT |
FLOAT4 (REAL) |
REAL |
FLOAT8(DOUBLE PRECISION) |
DOUBLE PRECISION |
DECIMAL[p (,s)] |
DECIMAL[p (,s)] |
NUMERIC[p (,s)] |
DECIMAL[p (,s)] |
CHAR(n) |
CHAR(n) |
CHARACTER(n) |
CHAR(n) |
NCHAR(n) |
CHAR(n) |
VARCHAR(n) |
VARCHAR(n) |
CHARACTER VARYING(55) |
VARCHAR(n) |
VARCHAR2(n) |
VARCHAR(n) |
NVARCHAR2(n) |
VARCHAR |
TEXT(CLOB) |
VARCHAR |
DATE |
TIMESTAMP |
TIMESTAMP |
TIMESTAMP |
UUID |
UUID |
JSON |
JSON |
添加GAUSSDB数据源约束
- 不支持如下语法:GRANT、REVOKE、SHOW GRANTS、SHOW ROLES、SHOW ROLE GRANTS。
- UPDATE和DELETE语法不支持筛选条件子句中包含跨catalog的条件,例如:UPDATE mppdb.table SET column1=value WHERE column2 IN (SELECT column2 from hive.table)。
- UPDATE语法不支持更新DATE/TIMESTAMP/VARBINARY字段。
- 不支持查询WHERE语句条件为REAL,例如SELECT * FROM mppdb.table WHERE column1 = REAL '1.1'。
- DELETE语法不支持筛选条件子句中包含子查询,例如:DELETE FROM mppdb.table WHERE column IN (SELECT column FROM mppdb.table1)。
- HetuEngine支持GaussDB数据源Decimal/Number/Numeric类型数据的最大精度不超过38位。
- 当谓词的前后两端任意一端包含子查询时,该谓词不会下推,如示例语句count(*) 后面存在子查询,则不下推,但子查询中的min函数可以下推。
select count(*) from item where i_current_price = (select min(i_current_price) from item);