You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

流水线读取MLTABLE时遇ScriptExecution.StreamAccess.NotFound错误求助

问题:Azure ML流水线读取MLTABLE时出现StreamNotFound错误

错误详情

Error Code: ScriptExecution.StreamAccess.NotFound
Native Error: error in streaming from input data sources
    StreamError(NotFound)
=> stream not found
    NotFound
Error Message: The requested stream was not found. Please make sure the request uri is correct.| session_id=1f8669ce-5a60-494b-a8dd-fd07fee8b186

背景说明

通过flight_data = ml_client.data.get(name='flightdelaydata1', version='2')获取数据后,交互式会话中可正常读取MLTABLE,代码如下:

import mltable
tbl = mltable.load(f'azureml:/{flight_data.id}')
tbl.to_pandas_dataframe()

但在流水线运行时,执行数据处理脚本却触发上述错误。以下是流水线中的相关代码:

数据处理脚本(data_prep.py)

%%writefile {data_prep_folder}/data_prep.py
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import mlflow
import mltable
import os

import argparse

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--data', help='Input data for flight delay model', type=str)
    parser.add_argument('--train_test_split_ratio', help='Test data proportion', type=float, default=.20)
    parser.add_argument('--train_data', help='Training Data', type=str)
    parser.add_argument('--test_data', help='Test Data', type=str)

    args = parser.parse_args()

    mlflow.start_run()

    tbl = mltable.load(args.data)
    df = tbl.to_pandas_dataframe()
    mlflow.log_metric('Number of observations', df.shape[0])
    mlflow.log_metric('Number of features', df.shape[1])

    df = df.dropna()
    df = df.loc[ : , ['Month', 'DayofMonth', 'DayOfWeek', 'DepDelay', 'DepDel15', 'ArrDel15', 'Cancelled', 'ArrDelay']]

    Train_data, Test_data = train_test_split(df, test_size=args.train_test_split_ratio)

    Train_data.to_csv(os.path.join(args.train_data, 'train.csv'))
    Test_data.to_csv(os.path.join(args.test_data, 'test.csv'))

    mlflow.end_run()

if __name__ == "__main__":
    main()

Command组件代码

from azure.ai.ml.constants import AssetTypes

data_prep_component = command(name='flight_delay_model_data_prep',
                              description='Flight Delay Model Prediction Data Preparation Component',
                              display_name='Flight Delay Data Prep',
                              inputs = {
                                        'data' : Input(type=AssetTypes.MLTABLE, path = flight_data.path),
                                        'train_test_split_ratio' : Input(type='number')
                              },
                              outputs = {
                                        'train_data' : Output(type = 'uri_folder'),
                                        'test_data' : Output(type = 'uri_folder')
                                        },
                              command= '''python {data_prep_folder}/data_prep.py \
                                            --data ${{inputs.data}} --train_test_split_ratio ${{inputs.train_test_split_ratio}} \
                                            --train_data ${{outputs.train_data}} --test_data ${{outputs.test_data}}''',
                              environment = f'{envt.name}:{envt.version}'
                              )

排查与解决方法

1. 修正MLTABLE资产引用格式

流水线中直接传递flight_data.path可能是原始存储路径(如ADLS路径),而非mltable.load()支持的MLTABLE资产引用格式。将Command组件的data输入路径修改为交互式会话中使用的格式:

'data' : Input(type=AssetTypes.MLTABLE, path = f'azureml:/{flight_data.id}'),

或直接传入资产ID:

'data' : Input(type=AssetTypes.MLTABLE, path = flight_data.id),

2. 检查计算环境权限

流水线使用的计算集群(服务主体/托管标识)可能缺少MLTABLE对应存储容器的访问权限,而交互式会话使用的是你的用户权限。需为计算集群的标识添加存储容器的Blob Data Contributor或对应RBAC角色。

3. 验证MLTABLE定义文件

重新注册MLTABLE资产,确保资产中的MLTable定义文件路径配置正确,无路径拼写或格式错误。

4. 打印输入路径排查

在data_prep.py的main函数中添加打印语句,输出实际接收的路径值,确认格式是否符合要求:

print(f"Input data path received: {args.data}")

查看流水线日志中的输出,判断路径是否为mltable.load()可识别的格式。

内容的提问来源于stack exchange,提问作者Karthik S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 02:24:54