DLC 离线单表读取节点配置
参数 | 说明 |
数据来源 | 可用的 DLC 数据源。 |
库 | 支持选择、或者手动输入需读取的库名称。 默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。 当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
表 | 支持选择、或者手动输入需读取的表名称。 |
切割键 | 指定用于数据分片的字段,指定后将启动并发任务进行数据同步。您可以将源数据表中某一列作为切分键,建议使用主键或有索引的列作为切分键。 |
筛选条件(选填) | 在实际业务场景中,通常会选择当天的数据进行同步,将 where 条件指定为 gmt_create>$bizdate。 where 条件可以有效地进行业务增量同步。 如果不填写 where 语句,包括不提供 where 的 key 或 value,数据同步均视作同步全量数据。 |
高级设置(选填) | 可根据业务需求配置参数。 |
DLC 离线单表写入节点配置
参数 | 说明 |
数据去向 | 需要写入的 DLC 数据源。 |
库 | 支持选择、或者手动输入需写入的库名称。 默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。 当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
表 | 支持选择、或者手动输入需写入的表名称。 当数据源网络不联通导致无法直接拉取表信息时,可手动输入表名称。在数据集成网络连通的情况下,仍可进行数据同步。 当来源表为 MySQL、ES、Kafka 类型,支持一键建立目标表。 |
写入模式 | DLC 写入支持三种模式: overwrite:覆盖原有数据写入。 append:追加写入,主键冲突时报错。 upsert:更新写入,主键冲突时更新数据。 |
高级设置(选填) | 可根据业务需求配置参数。 |
数据类型转换支持
读取
DLC 数据类型 | 内部类型 |
INTEGER | Long |
FLOAT、DOUBULE、DECIMAL | Double |
STRING、VARCHAR、CHAR、ARRAY | String |
TIMESTAMP、DATE、TIMESTAMP WITH TIME ZONE | Date |
BOOLEAN | Boolean |
写入
内部类型 | DLC 数据类型 |
Long | INTEGER |
Double | FLOAT、DOUBULE、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": {"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中包含了database和engine的信息"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": "***"},"name": "dlcreader"},"transformer": [],"writer": {"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"],//JDBC中包含了database和engine的信息"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": []},"name": "dlcwriter"}}],"setting": {"errorLimit": {"record": 0 //脏数据阈值},"speed": {"byte": -1, //不限制同步速度,正整数表示设置最大传输速度 byte/s"channel": 1 //并发数量}}}