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

如何阻止Azure机器学习批量作业注册匿名数据资产至工作区

Azure ML批量作业ETL中处理自动注册匿名数据资产的方案

问题背景

我已成功将Azure Machine Learning批量作业作为ETL流程的一部分使用,但每次ETL运行都会向工作区注册匿名数据资产。目前通过REST调用触发作业,请求体如下:

{
  "properties": {
            "InputData": {
                "batchInput": {
                    "JobInputType": "UriFolder",
                    "Uri": "azureml://datastores/<datastore>/paths/<input folder>"
                }
            },
            "OutputData": {
                "batchOutput": {
                    "JobOutputType": "UriFile",
                    "Uri": "azureml://datastores/<datastore>/paths/<output folder>"
                }
            }, 
            "compute": {"instanceCount": "1"}
        }
    }

需求:

  1. 如何阻止自动注册数据资产
  2. 若无法实现,为数据资产设置一致名称并支持版本化,避免混乱的匿名标签

附带的batch脚本run函数如下(我们直接将输出数据写入已注册数据存储的Parquet文件,未使用run函数的返回输出):

def run(mini_batch):

    print(f"run method start: {__file__}, run({mini_batch})")

    for mb in mini_batch:
        df = pd.read_parquet(mb)

        <apply data transformations> 

        parquet_file_path = os.path.join(output_path, Path(mb).stem + '.parquet')
        print(f'parquet_path:{parquet_file_path}')

        SCHEMA = pa.schema([<pa schema>])
        
        df.to_parquet(parquet_file_path, schema=SCHEMA)

    return mini_batch

解决方案

一、阻止自动注册数据资产

Azure ML批量作业默认会将定义的输入、输出自动注册为数据资产,要关闭该行为,可在REST请求体的输入输出配置中添加register_data_asset: false参数:

修改后的REST请求体示例:

{
  "properties": {
            "InputData": {
                "batchInput": {
                    "JobInputType": "UriFolder",
                    "Uri": "azureml://datastores/<datastore>/paths/<input folder>",
                    "register_data_asset": false
                }
            },
            "OutputData": {
                "batchOutput": {
                    "JobOutputType": "UriFile",
                    "Uri": "azureml://datastores/<datastore>/paths/<output folder>",
                    "register_data_asset": false
                }
            }, 
            "compute": {"instanceCount": "1"}
        }
    }

同时确认作业配置中没有强制要求注册数据资产的全局设置,且你的run函数是直接写入数据存储而非返回输出,避免触发自动注册逻辑。

二、设置一致的可版本化数据资产名称

若上述方法无法生效,可在REST请求体中为输入输出指定明确的名称和版本,替代默认的匿名生成:

输入数据资产配置

在InputData的对应项中添加DataAssetName和DataAssetVersion参数:

"batchInput": {
    "JobInputType": "UriFolder",
    "Uri": "azureml://datastores/<datastore>/paths/<input folder>",
    "DataAssetName": "etl_batch_input",
    "DataAssetVersion": "1.0.0"
}

输出数据资产配置

在OutputData的对应项中指定名称和版本,版本可根据ETL运行的时间戳、构建号等动态生成(比如20240520.1):

"batchOutput": {
    "JobOutputType": "UriFile",
    "Uri": "azureml://datastores/<datastore>/paths/<output folder>",
    "DataAssetName": "etl_batch_output",
    "DataAssetVersion": "20240520.1"
}

这样每次运行时,只要版本号唯一,就会生成同一名称下的不同版本数据资产,避免混乱的匿名标签。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:27:24