如何修复SageMaker数据质量监控调度任务'Job inputs had no data'报错
故障根因与修复方案
核心问题1:EndpointInput配置缺失关键参数
你当前的端点输入配置没有指定输入类型和JSON数据解析规则,导致监控任务无法从捕获的JSONL文件中提取有效特征数据:
- 需显式指定
input_type="Input"拉取端点输入数据,匹配数据质量监控的校验对象 - 需指定
content_type="application/json"和features_attribute参数,告诉监控任务如何从捕获的JSON结构中定位特征字段
修正后的配置如下:
ch_dq_ep = EndpointInput(endpoint_name=myendpoint_name, destination="/opt/ml/processing/input_data", s3_input_mode="File", s3_data_distribution_type="FullyReplicated", # 新增必填配置 input_type="Input", content_type="application/json", features_attribute="captureData.endpointInput.data")
核心问题2:监控调度配置不匹配
- 输出路径配置错误:你创建调度时
output_s3_uri传入了基线根目录,应该使用你预先定义的监控结果专用路径monitoring_outputs,避免路径匹配混乱 - 缺失数据集格式声明:你的输入为JSON格式,需要显式指定
dataset_format为JSON类型,和基线规则适配
修正后的调度创建代码如下:
my_data_monitor.create_monitoring_schedule(endpoint_input=ch_dq_ep, monitor_schedule_name=monitor_schedule_name, # 修改为监控结果专用路径 output_s3_uri=monitoring_outputs, constraints=baseline_constraints, statistics=baseline_statistics, schedule_cron_expression=CronExpressionGenerator.hourly(), enable_cloudwatch_metrics=True, # 新增数据集格式声明 dataset_format=DatasetFormat.json())
其他注意事项
- 你查询调度状态时传入的调度名称是
ch-dq-monitor-schdl-try17,但实际创建的调度名称是ch-dq-monitor-schdl-try21,注意避免笔误查错调度实例 - 你的输入为单请求携带多条样本的批量格式(每个特征对应数组),如果以上配置修改后仍报错,需要传入自定义预处理脚本,将批量数组展开为单条样本格式,匹配基线校验逻辑
- 确认端点数据捕获的S3路径没有自定义前缀,如果有自定义前缀需额外配置路径匹配规则,保证监控任务能定位到捕获的
.jsonl文件
内容的提问来源于stack exchange,提问作者Naveen Reddy Marthala
相关产品推荐
相关产品推荐

