创建Pipeline报ERROR 1970 ER_SUBPROCESS_TIMEOUT_ERROR子进程超时如何解决
故障根因
- 直接触发报错的原因是
CREATE PIPELINE语句中LOAD DATA S3后的S3目标路径传了空值。Pipeline启动时会拉起独立子进程对接S3服务,空路径会导致子进程无法定位合法的S3存储桶和对象位置,长时间无响应直到触发超时阈值,最终抛出ERROR 1970 ER_SUBPROCESS_TIMEOUT_ERROR。 - 聚合节点日志中记录的
write() system call failed with errno: 32 (Broken pipe)、NotifyAndClose(): Failed writing back to the engine是连带错误:对接S3的子进程因为参数非法异常退出后,引擎进程仍在向和子进程通信的管道句柄写数据,因对端进程已关闭才触发管道断裂报错,不是故障根因。 - 若补全路径后仍出现同类超时错误,需排查两类常见诱因:一是配置中填写的AWS访问密钥对没有目标S3路径的读取权限,子进程鉴权失败挂起;二是集群所有聚合节点、叶子节点到
eu-west-1区域S3服务的网络被防火墙、安全组拦截,出站443端口不通导致请求无法发出。
修复方案
- 第一步:补全语句中缺失的S3路径,标准格式为
s3://<目标存储桶名>/<可选的文件前缀路径>,同时填入真实有效的AWS访问密钥,修正后的参考语句如下:
CREATE PIPELINE library AS LOAD DATA S3 's3://your-target-bucket/raw-data/csv/' CONFIG '{"region": "eu-west-1"}' CREDENTIALS '{"aws_access_key_id": "你的实际AK值", "aws_secret_access_key": "你的实际SK值"}' INTO TABLE `test` FIELDS TERMINATED BY ',';
- 第二步:创建完成后先执行
TEST PIPELINE library;做配置校验,该命令会模拟S3数据拉取流程但不会实际写入业务表,可以快速定位路径错误、权限不足、网络不通类问题,不要直接启动Pipeline。 - 第三步:如果测试阶段仍报超时,逐台登录集群节点校验到S3服务的连通性,同时核对IAM权限策略,确保密钥对应的身份拥有目标存储桶的
s3:ListBucket、s3:GetObject权限。
内容的提问来源于stack exchange,提问作者Zeeshan Ansari
相关产品推荐
相关产品推荐

