DDL变更
DDL变更操作包括创建数据库/表、变更表字段类型、变更表字段名称、表列增/删等数据表结构变化操作。当前CDL仅支持从PgSQL同步数据到Hudi的DDL变更,所有DDL变更操作顺序为:
- 停止CDL任务。
- Hudi侧执行DDL变更。
- 源端库进行DDL变更。
本章节提供了新增字段、修改字段类型、修改字段名称、删除字段等DDL变更操作指导。
CDL DDL支持本章节所述的DDL操作,本章节未提及的链路及DDL操作均不支持,否则可能会导致任务失败。
新增字段
- 登录FusionInsight Manager,选择“集群 > 服务 > CDL”,单击“CDLService UI”右侧的超链接进入CDLService WebUI界面,在数据同步任务作业列表界面选择需进行DDL变更作业所在行的“更多 > 停止”,停止CDL作业。
- 使用客户端安装用户登录安装了客户端的节点,并执行以下命令:
cd 客户端安装目录
source bigdata_env
source Hudi/component_env
kinit 组件业务用户(若集群未开启Kerberos认证,请跳过该操作)
- 执行以下命令登录spark-sql命令行:
cd Spark/spark/bin
./spark-sql
- 执行以下命令:
set hoodie.schema.evolution.enable=true;
- 执行以下命令在表中新增字段:
alter table tableName add columns(columnName columnType);
- 在源端数据库中新增与Hudi新增的同样列名与数据类型。
- 在CDL WebUI界面启动1停止的任务。
修改字段类型
字段类型转换时,需要确保源值的数据类型能够正确转换为目标类型。如果数据类型不兼容,转换可能会失败,进而导致任务失败。
- 将数据类型VARCHAR修改为NUMBER
- 登录FusionInsight Manager,选择“集群 > 服务 > CDL”,单击“CDLService UI”右侧的超链接进入CDLService WebUI界面,在数据同步任务作业列表界面选择需进行DDL变更作业所在行的“更多 > 停止”,停止CDL作业。
- 使用客户端安装用户登录安装了客户端的节点,并执行以下命令:
source bigdata_env
source Hudi/component_env
kinit 组件业务用户(若集群未开启Kerberos认证,请跳过该操作)
- 执行以下命令登录spark-sql命令行:
./spark-sql
- 在Hudi侧执行DDL变更,修改数据类型string为decimal:
ALTER TABLE ddltest ALTER COLUMN string TYPE decimal(20,10);
- 在源数据库中插入数据,数据可以正常写入Hudi。
- 在源数据库侧,将数据类型VARCHAR修改为NUMBER。
- 在CDL WebUI界面启动任务,源数据库更新数据。
- 将数据类型NUMBER修改为VARCHAR
- 登录FusionInsight Manager,选择“集群 > 服务 > CDL”,单击“CDLService UI”右侧的超链接进入CDLService WebUI界面,在数据同步任务作业列表界面选择需进行DDL变更作业所在行的“更多 > 停止”,停止CDL作业。
- 使用客户端安装用户登录安装了客户端的节点,并执行以下命令:
source bigdata_env
source Hudi/component_env
kinit 组件业务用户(若集群未开启Kerberos认证,请跳过该操作)
- 执行以下命令登录spark-sql命令行:
./spark-sql
- 在Hudi侧执行DDL变更,修改数据类型decimal为string:
- 在源数据库中插入数据,数据可以正常写入Hudi。
- 在源数据库侧,将数据类型NUMBER修改为VARCHAR。
- 在CDL WebUI界面启动任务,源数据库更新数据。
- 将数据类型DATE修改为VARCHAR
- 登录FusionInsight Manager,选择“集群 > 服务 > CDL”,单击“CDLService UI”右侧的超链接进入CDLService WebUI界面,在数据同步任务作业列表界面选择需进行DDL变更作业所在行的“更多 > 停止”,停止CDL作业。
- 使用客户端安装用户登录安装了客户端的节点,并执行以下命令:
source bigdata_env
source Hudi/component_env
kinit 组件业务用户(若集群未开启Kerberos认证,请跳过该操作)
- 执行以下命令登录spark-sql命令行:
./spark-sql
- 在Hudi侧执行DDL变更,修改数据类型date为string:
- 在源数据库插入数据,数据可以正常写入Hudi。
- 在源数据库侧,将数据类型DATE修改为VARCHAR。
- 在CDL WebUI界面启动任务,源数据库更新数据。
- 不带时区DATA类型修改为带时区的DATA类型
- 登录FusionInsight Manager,选择“集群 > 服务 > CDL”,单击“CDLService UI”右侧的超链接进入CDLService WebUI界面,在数据同步任务作业列表界面选择需进行DDL变更作业所在行的“更多 > 停止”,停止CDL作业。
- 在源数据库侧,将数据类型timestamp修改为timestamptz。
- 在源数据库插入数据,数据可以正常写入Hudi。
- 在CDL WebUI界面启动任务,源数据库更新数据。
- 字符扩长
- 登录FusionInsight Manager,选择“集群 > 服务 > CDL”,单击“CDLService UI”右侧的超链接进入CDLService WebUI界面,在数据同步任务作业列表界面选择需进行DDL变更作业所在行的“更多 > 停止”,停止CDL作业。
- 在源数据库将字符长度增大。
- 在源数据库插入数据,数据成功写入Hudi。
- 在CDL WebUI界面启动任务,源数据库更新数据。
- decimal精度变大
- 登录FusionInsight Manager,选择“集群 > 服务 > CDL”,单击“CDLService UI”右侧的超链接进入CDLService WebUI界面,在数据同步任务作业列表界面选择需进行DDL变更作业所在行的“更多 > 停止”,停止CDL作业。
- 使用客户端安装用户登录安装了客户端的节点,并执行以下命令:
source bigdata_env
source Hudi/component_env
kinit 组件业务用户(若集群未开启Kerberos认证,请跳过该操作)
- 执行以下命令登录spark-sql命令行:
./spark-sql
- 在Hudi侧执行DDL变更,将decimal类型精度变大:
ALTER TABLE ddltest2 ALTER COLUMN decimal TYPE decimal(30,15);
- 在源数据库侧,将decimal类型精度变大。
- 在源数据库插入数据,数据可以正常写入Hudi。
- 在CDL WebUI界面启动任务,源数据库更新数据。
修改字段名称
- 登录FusionInsight Manager,选择“集群 > 服务 > CDL”,单击“CDLService UI”右侧的超链接进入CDLService WebUI界面,在数据同步任务作业列表界面选择需进行DDL变更作业所在行的“更多 > 停止”,停止CDL作业。
- 使用客户端安装用户登录安装了客户端的节点,并执行以下命令:
cd 客户端安装目录
source bigdata_env
source Hudi/component_env
kinit 组件业务用户(若集群未开启Kerberos认证,请跳过该操作)
- 执行以下命令登录spark-sql命令行:
cd Spark/spark/bin
./spark-sql
- 在Hudi侧执行DDL变更,修改字段名称:
ALTER TABLE ddltest RENAME COLUMN columnName TO newColumnName;
- 在源数据库修改字段名称。
- 在CDL WebUI界面启动任务,源数据库更新数据。
删除字段
- 登录FusionInsight Manager,选择“集群 > 服务 > CDL”,单击“CDLService UI”右侧的超链接进入CDLService WebUI界面,在数据同步任务作业列表界面选择需进行DDL变更作业所在行的“更多 > 停止”,停止CDL作业。
- 使用客户端安装用户登录安装了客户端的节点,并执行以下命令:
cd 客户端安装目录
source bigdata_env
source Hudi/component_env
kinit 组件业务用户(若集群未开启Kerberos认证,请跳过该操作)
- 执行以下命令登录spark-sql命令行:
cd Spark/spark/bin
./spark-sql
- 在Hudi侧执行DDL变更,删除字段:
ALTER TABLE ddltest DROP COLUMN columnName;
- 在CDL WebUI界面启动任务,源数据库更新数据。