TcaplusDB导数工具
TcaplusDB导数工具(Importer),是基于Tcaplus C++ SDK开发的,用于从外部数据源(如MySQL、本地CSV文件、HDFS等)向TcaplusDB批量导入数据的工具。
数据导入的链路是:数据源(source)-> 数据转换(transform,可选项)-> 目标数据表(target)。
1. 使用限制
目前只支持向Generic表导入数据,暂不支持向List表导入数据。
目前不支持向包含复杂类型(如array,struct)字段的表导入数据。
导数工具暂时只支持在Linux系统上运行。
目前只支持一次向单表TcaplusDB表导入数据,如果要同时向多张表导入数据,或者提高并行度,可以启动多个独立的导数任务。
高版本的导数工具不能向低版本的服务端导入数据。
2. 使用场景
用于从外部数据源(如MySQL、本地CSV文件、HDFS等)向TcaplusDB批量导入数据的工具。
3. 使用方法
3.1. 下载导数工具
下载 导数工具 ,并解压到本地(本文档将以解压到/data/目录为例)。
3.2. 配置导数任务
导数任务配置文件为JSON格式,以从MySQL向TcaplusDB导数为例,在/data/目录下创建task1.conf文件(任务配置文件名可以任意指定,启动任务时,以参数的形式传入),文件内容参见下方:
{
"source": {
"type": "SQL_MySQL",
"parameters": {
"SQL": "SELECT * FROM test",
"host": "x.x.x.x",
"port": "3306",
"database": "test",
"username": "root",
"password": "****",
"readTimeout": "5",
"charset": "utf8"
}
},
"transform": {
"type": "CUSTOM",
"libraries": [
"./libcustom_record_transformer.so"
],
"parameters": {
}
},
"target": {
"dirs": [
"tcp://x.x.x.x:9999"
],
"appId": 1,
"appPassword": "****************",
"tableGroupId": 1,
"table": "test",
"tableType": "PB",
"writeMode": "REPLACE",
"writeRetryInterval": 1000,
"writeRetryCount": 10
},
"config": {
"badDataHandlePolicy": "IGNORE"
}
}
任务配置文件的内容分为4个部分:
source部分:配置数据源;
transform部分:配置数据转换逻辑,这部分参数是选配的,如果没有数据转换的需求,可以不进行配置,如果需要自定义转换逻辑,参见后续的“自定义数据转换插件”章节的内容;
target部分:配置目标TcaplusDB表的相关信息;
config部分:设置导数任务的一些通用设置,如限速、导入失败的数据的处理方式等,这部分参数是选配的。
各个部分配置参数的详细介绍参见下表:
配置项名称 | 说明 |
---|---|
source | 【必配】数据源相关信息。 |
source.type | 数据源类型,当前只支持SQL_MySQL一种,即将MySQL数据库的查询结构作为数据源。 |
source.parameters | 数据源参数列表。 以Key-Value的形式提供,Key为参数名,Value为参数值,当前参数值只支持字符串。 例如选择SQL_MySQL数据源时,需要提供查询语句(SQL),数据库实例地址,端口,用户名,密码,数据库名称等必要信息。 不同类型的数据源,对应的参数与有些不同,详见工具发布中的各个样例任务配置文件。 |
transform | 【选配】数据转换器相关信息。 |
transform.type | 数据转换器类型。当前支持DEFAULT和CUSTOM两种。 DEFAULT:默认数据转换器是工具内置的转换器,未配置transform和transform类型为DEFAULT的时候,使用的都是默认数据转换器。默认数据转换器只能用于目标表的字段集是数据源字段集的子集,且字段值类型一致的场景,否则会报错。 CUSTOM:用户自定义数据转换器。可以根据需要,实现复杂的数据转换逻辑。自定义数据转换器继承自RecordTransformer基类,详见record_transformer.h和record_transformer_plugin.h文件中的相关说明。最终以so文件的形式提供。 |
transform.libraries | 数据转换器程序文件(so文件)的路径。 当数据转换器类型为CUSTOM时,该参数为必填参数,用于指定数据转换器程序文件路径。 |
transform.parameters | 数据转换器参数列表。 以Key-Value的形式提供,Key为参数名,Value为参数值,当前参数值只支持字符串。 参数列表将会作为数据换器的Initialize函数入参传入,用于初始化数据转换器。 |
target | 【必配】目标表信息。 |
target.dirs | 目标表所在集群的tcaplus dir节点地址列表。可从集群管理员处获取。 |
target.appId | 目标表所属业务ID。可从集群管理员处获取。 |
target.appPassword | 目标表所属业务密码。可从集群管理员处获取。 |
target.tableGroupId | 目标表所属表格组ID(Zone ID)。可从集群管理员处获取。 |
target.table | 目标表表名。 |
target.tableType | 目标表类型。当前只有TDR和PB两种。 |
target.writeMode | 目标表数据写入模式。当前支持INSERT和REPLACE两种模式: INSERT:当相同Key值的数据存在时,本条数据导入失败; REPLACE:当相同Key值的数据存在时,则覆盖原数据,否则插入新数据。 |
target.writeRetryInterval | 目标表写入失败重试时间间隔,单位微秒,默认是1000微秒(1毫秒)。 |
target.writeRetryCount | 目标表写入失败重试次数,默认是5次。 |
target.handleAsynCallbackInterval | 处理异步回调的间隔,单位是写请求的次数。 例如间隔是10,表示每发送10次写请求,集中处理一次回调。 处理异步回调的频率过高,可能会因为空转,导致资源的浪费,适当地降低频率,可以提高整体QPS。 |
target.handleAsynCallbackBatch | 每次可以处理的异步回调个数的上限。 单次处理异步回调的个数过多,导致处理时间过长,会导致写请求大量积压,因为当前发送写请求和处理回调的是同一个线程。 |
config | 【选配】导数任务其它配置。 |
config.badDataHandlePolicy | 导入失败的数据处理策略。当前只支持IGNORE和OUTPUT_TO_FILE两种策略。 IGNORE表示直接丢弃导入失败的数据,OUTPUT_TO_FILE表示将导入失败的数据输出的指定文件,两种策略都不会中断导数任务执行。 当指定使用OUTPUT_TO_FILE策略时,必须指定config.badDataOutputFilePath参数值。 |
config.badDataOutputFilePath | 存放导入失败的数据的文件。输出的数据文件为CSV格式,如果需要将导入失败的数据重新导入,则可以重新配置一个从本地CSV文件向TcaplusDB导数的任务,再执行导入。 |
config.QPSLimit | 导入速度(QPS)限制,0表示不限制,默认不限制。 |
3.3. 执行导数任务
运行以下命令,启动导数任务,等待任务执行完毕。
cd /data/TcaplusImporterX.XX.X.XXXXXX.x86_64_release_XXXXXXXX/release/x86_64/
./tcaplus_data_importer /data/task1.conf
注意:如果任务配置文件名不是/data/task1.conf,则将命令参数修改为对应的文件名即可。路径中的X根据实际版本号填写。
3.4. 查看进度日志和运行日志
默认情况下,导数的进度日志和运行日志都是输出在当前目录下,其中monitor.log为进度日志(主要用于查看导入进度和成功率等),run.log和run_NetThread_X.log为运行日志(主要用于问题定位)。
默认日志输出级别是INFO,如果需要修改日志输出级别,需要将/data/TcaplusImporterX.XX.X.XXXXXX.x86_64_release_XXXXXXXX/release/x86_64/example/tlogconf.xml文件复制到与工具同级目录下,并将其中的PriorityLow参数由INFO修改为目标级别(如DEBUG)。
注意:日志输出配置文件名必须固定为tlogconf.xml
3.5. 自定义数据转换插件
用户可以根据需要自定义数据转换器,实现复杂的数据转换逻辑。
自定义数据转换器继承自RecordTransformer基类,详见record_transformer.h和record_transformer_plugin.h文件中的相关说明。最终以so文件的形式提供。
详见 /data/TcaplusImporterX.XX.X.XXXXXX.x86_64_release_XXXXXXXX/release/x86_64/example/extension/README.md 中的说明(路径中的X根据实际版本号填写)。