如何在Azure ML管道组件中写入Azure Blob元数据(AML v2)
在Azure ML v2 Python SDK中更新Blob元数据的方法
当你通过Azure ML管道组件的uri_folder输出创建Blob文件后,可通过以下步骤使用AML v2 Python SDK更新该Blob的元数据:
步骤1:初始化ML客户端并获取目标数据存储
首先连接到Azure ML工作区,获取对应的Blob数据存储实例:
from azure.ai.ml import MLClient from azure.identity import DefaultAzureCredential # 初始化ML客户端 ml_client = MLClient( credential=DefaultAzureCredential(), subscription_id="你的订阅ID", resource_group_name="你的资源组名", workspace_name="你的工作区名" ) # 获取目标Blob数据存储 datastore = ml_client.datastores.get("你的数据存储名称")
步骤2:创建Blob存储客户端
利用AML数据存储的连接信息,生成Azure Blob Storage的客户端:
from azure.storage.blob import BlobServiceClient # 获取数据存储的连接字符串 connection_string = datastore.account_key.get_secret_value() blob_service_client = BlobServiceClient.from_connection_string(connection_string) # 获取数据存储对应的Blob容器客户端 container_client = blob_service_client.get_container_client(datastore.container_name)
步骤3:定位目标Blob并更新元数据
根据创建文件时的路径定位目标Blob,调用set_blob_metadata方法完成元数据更新:
# 目标Blob的路径,需与你创建文件时的路径对应 # 例:若args.datapath对应数据存储根目录,路径为"content.txt"; 若有子目录则为"子目录路径/content.txt" blob_path = "content.txt" # 获取目标Blob的客户端 blob_client = container_client.get_blob_client(blob_path) # 定义要设置的元数据(键值对格式) metadata = { "author": "your_team", "generated_by": "AML_pipeline", "creation_date": "2024-05-20" } # 更新Blob元数据 blob_client.set_blob_metadata(metadata=metadata)
追加元数据而非覆盖
若需保留现有元数据并追加新字段,可先获取当前元数据再更新:
# 获取Blob当前的元数据 existing_metadata = blob_client.get_blob_properties().metadata # 追加新的元数据字段 existing_metadata.update({"processing_status": "completed"}) # 更新元数据 blob_client.set_blob_metadata(metadata=existing_metadata)
内容的提问来源于stack exchange,提问作者applecodervinegar
相关产品推荐
相关产品推荐

