DataWorks同步脚本报错This error often occurs when a lot dirty data exists in the source data. Please carefully check the dirty data log information reported by DataX, or you can tune up the dirty data threshold value. ]. 怎么搞 ?
写入报错https://help.aliyun.com/zh/dataworks/support/batch-synchronization?spm=a2c4g.11186623.0.i7
问题现象:
写入数据时,报错如下:Caused by: java.util.concurrent.ExecutionException: ERR-CODE: [TDDL-4614][ERR_EXECUTE_ON_MYSQL] Error occurs when execute on GROUP 'xxx' ATOM 'dockerxxxxx_xxxx_trace_shard_xxxx': Communications link failure The last packet successfully received from the server was 12,672 milliseconds ago. The last packet sent successfully to the server was 12,013 milliseconds ago. More...
可能原因:
慢查询导致SocketTimeout。TDDL默认连接数据的SocketTimeout是12秒,如果一个SQL在MySQL端执行超过12秒仍未返回,会报4614的错误。当数据量较大或服务端繁忙时,会偶尔出现该错误。
解决方法:
建议数据库稳定后,重新运行同步任务。
联系数据库管理员调整该超时时间。
这个错误通常发生在源数据中存在大量脏数据时。请仔细检查DataX报告的脏数据日志信息,或者调整脏数据阈值。
解决方法:
dirty_data_threshold
参数来调整脏数据阈值。例如,将阈值设置为0.5,表示当脏数据的占比超过50%时,DataX会报错。修改后的同步脚本如下:{
"job": {
"setting": {
"speed": {
"channel": 1
}
},
"content": [
{
"reader": {
"name": "odpsreader",
"parameter": {
"accessId": "your_access_id",
"accessKey": "your_access_key",
"project": "your_project",
"table": "your_table",
"partition": "your_partition",
"endpoint": "your_endpoint",
"dirty_data_threshold": 0.5, # 设置脏数据阈值为0.5
...
}
},
"writer": {
"name": "hdfswriter",
"parameter": {
"defaultFS": "hdfs://your_hdfs_host:your_hdfs_port",
"fileType": "text",
"path": "your_hdfs_path",
...
}
}
}
]
}
}
看下百问百答脏数据篇 https://developer.aliyun.com/article/748252?spm=a2c6h.12873581.0.dArticle748252.1ec43740LqNDlu&groupCode=dataworks ,此回答整理自钉群“DataWorks交流群(答疑@机器人)”
这个错误通常发生在源数据中存在大量脏数据时。请仔细检查DataX报告的脏数据日志信息,或者调整脏数据阈值值。
解决方法:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。