一、DLC 离线单表读取节点配置
| 参数 | 说明 |
| 数据来源 | 可用的 DLC 数据源。 |
| 库 | 支持选择、或者手动输入需读取的库名称。默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。当数据源网络不连通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
| 表 | 支持选择、或者手动输入需读取的表名称。 |
| 切割键 | 指定用于数据分片的字段,指定后将启动并发任务进行数据同步。你可以将源数据表中某一列作为切分键,建议使用主键或有索引的列作为切分键。 |
| 筛选条件(选填) | 在实际业务场景中,通常会选择当天的数据进行同步,将 where 条件指定为 gmt_create>$bizdate。where 条件可以有效地进行业务增量同步。如果不填写 where 语句,包括不提供 where 的 key 或 value,数据同步均视作同步全量数据。 |
| 高级设置(选填) | 可根据业务需求配置参数。 |
二、DLC 离线单表写入节点配置
| 参数 | 说明 |
| 数据去向 | 需要写入的 DLC 数据源。 |
| Catalog | 需要写入的 DLC Catalog 目录。 |
| 库 | 支持选择、或者手动输入需写入的库名称。默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。当数据源网络不连通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
| 表 | 支持选择、或者手动输入需写入的表名称。当数据源网络不连通导致无法直接拉取表信息时,可手动输入表名称。在数据集成网络连通的情况下,仍可进行数据同步。当来源表为 MySQL、ES、Kafka 类型,支持一键建立目标表。 |
| 写入模式 | DLC 写入支持三种模式:overwrite:覆盖原有数据写入。append:追加写入,主键冲突时报错。upsert:更新写入,根据用户指定的唯一键进行判断,唯一键相同时更新数据,唯一键不同时追加数据。请确保唯一键的正确性,避免写入报错。 |
| DLC 引擎 | DLC 写入使用的引擎。 |
| 前置 SQL(选填) | 执行同步任务之前执行的 SQL 语句,根据数据源类型对应的正确 SQL 语法填写 SQL。 |
| 后置 SQL(选填) | 执行同步任务之后执行的 SQL 语句,根据数据源类型对应的正确 SQL 语法填写 SQL。 |
| 高级设置(选填) | 可根据业务需求配置参数。 |
三、读取
| DLC 数据类型 | 内部类型 |
| INTEGER | LONG |
| FLOAT、DOUBLE、DECIMAL | DOUBLE |
| STRING、VARCHAR、CHAR、ARRAY | STRING |
| TIMESTAMP、DATE、TIMESTAMP WITH TIME ZONE | DATE |
| BOOLEAN | BOOLEAN |
四、写入
| 内部类型 | DLC 数据类型 |
| LONG | INTEGER |
| DOUBLE | FLOAT、DOUBLE、DECIMAL |
| STRING | STRING、MAP、STRUCT |
| DATE | TIMESTAMP、DATE、TIMESTAMP WITH TIME ZONE |
| BOOLEAN | BOOLEAN |
| BYTES | BINARY |
五、1. DLC 字段实际值为 null 但读出的值为'空字符串,导致转为 LONG 类型报脏数据
问题原因:
由于集成 DLC 读取任务是向 DLC 提交查询 sql,DLC 引擎处理完毕后集成直接读取的结果文件,文件中会把 null 处理成空字符串,而在集成这边又不支持处理成指定值。
解决方案:
在配置任务时使用 DLC 函数 IFNULL 进行转换,将值的预处理在 DLC 引擎那边完成。其它类似情况都可参考使用 DLC 函数。
六、DLC 脚本 Demo
如果你配置离线任务时,使用脚本模式的方式进行配置,你需要在任务脚本中按照脚本的统一格式要求编写脚本中的 reader 参数和 writer 参数。
{ "job": { "content": [ { "reader": { "name": "DLCreader", "parameter": { "password": "******", "resultFormat": "CSV", "hadoopConfig": { "service.region": "ap-beijing", "fs.cosn.userinfo.secretId": "***", "service.engine.type": "BATCH", "service.jwt.secret": "******", "executor.secret.key": "***", "owner.uin": "******", "operator.uin": "******", "fs.cosn.trsf.fs.ofs.tmp.cache.dir": "/tmp/", "DLC.spark.executor.num": "2", "DLC.spark.executor.max.num": "5", "tmp.token.open": "true", "fs.cosn.userinfo.secretKey": "***", "fs.cosn.impl": "org.apache.hadoop.fs.CosFileSystem", "fs.cosn.trsf.fs.ofs.user.appid": "******", "user.appid": "******", "executor.secret.id": "***", "fs.cosn.tmp.dir": "/tmp/hadoop_cos", "fs.cosn.credentials.provider": "com.tencent.wedata.datax.plugin.reader.DLCreader.provider.WeDataCredentialsProvider", "gateway.url": "***", "fs.cosn.bucket.region": "ap-beijing", "DLC.spark.driver.size": "large", "fs.cosn.trsf.fs.ofs.bucket.region": "ap-beijing", "DLC.spark.executor.size": "medium" }, "column": ["id", "name"], "connection": [ { "jdbcUrl": ["jdbc:DLC:DLC.internal.tencentcloudapi.com?task_type=SparkSQLTask&database_name=source_database&datasource_connection_name=DataLakeCatalog®ion=ap-beijing&data_engine_name=source_engine"], "table": ["source_table"] } ], "where": "id>10", "skipHeader": "true", "splitPk": "id", "username": "***" } }, "transformer": [], "writer": { "name": "DLCwriter", "parameter": { "endpoint": "DLC.internal.tencentcloudapi.com", "secretKey": "***", "dbName": "sink_database", "hadoopConfig": { "fs.cosn.userinfo.region": "ap-beijing", "service.region": "ap-beijing", "qcloud.DLC.credential.provider.class": "com.tencent.wedata.datax.plugin.writer.DLCwriter.provider.WeDataDLCCredentialProvider", "service.engine.type": "BATCH", "service.jwt.secret": "******", "executor.secret.key": "***", "owner.uin": "******", "operator.uin": "******", "fs.cosn.posix_bucket.fs.impl": "org.apache.hadoop.fs.CosNFileSystem", "tmp.token.open": "true", "DLC.spark.executor.num": "1", "DLC.spark.executor.max.num": "3", "request.identity.token": "******", "fs.lakefs.impl": "org.apache.hadoop.fs.lakefs.LakeFileSystem", "fs.cosn.impl": "org.apache.hadoop.fs.CosFileSystem", "user.appid": "******", "executor.secret.id": "***", "service.secret.id": "***", "fs.cosn.credentials.provider": "com.tencent.wedata.datax.plugin.writer.DLCwriter.provider.WeDataFsCosCredentialsProvider", "service.endpoint": "DLC.internal.tencentcloudapi.com", "gateway.url": "***", "DLC.spark.driver.size": "medium", "service.secret.key": "***", "DLC.spark.executor.size": "medium" }, "column": ["id", "name"], "jdbcUrl": "jdbc:DLC:DLC.internal.tencentcloudapi.com?task_type=SparkSQLTask&database_name=sink_database&datasource_connection_name=DataLakeCatalog®ion=ap-beijing&data_engine_name=sink_engine", "secretId": "***", "writeMode": "overwrite", "region": "ap-beijing", "tableName": "sink_table", "on": [] } } } ], "setting": { "errorLimit": { "record": 0 }, "speed": { "byte": -1, "channel": 1 } } }}