如何无需指定文件名直接读取Azure存储容器中Parquet文件至AML工作区
在Azure Machine Learning Studio中批量读取存储容器内的Parquet文件
方法一:使用Azure ML Data Assets(推荐,原生集成)
- 操作步骤:
- 进入Azure ML Studio工作区的「数据」页面,点击「创建」→「从云存储」。
- 选择目标存储账户和容器,将数据资产类型设为「文件夹」,直接指向存放Parquet文件的容器路径,完成创建。
- 在Notebook或Pipeline代码中读取并加载所有文件:
from azure.ai.ml import MLClient from azure.identity import DefaultAzureCredential import pyarrow.parquet as pq import pandas as pd # 初始化MLClient(用工作区托管身份验证) ml_client = MLClient( DefaultAzureCredential(), subscription_id="你的订阅ID", resource_group_name="资源组名称", workspace_name="工作区名称" ) # 获取已创建的数据资产 data_asset = ml_client.data.get(name="你的数据资产名", version="版本号") # 批量读取所有Parquet文件并合并 parquet_dataset = pq.ParquetDataset(data_asset.path, filesystem="azure") final_df = parquet_dataset.read_pandas().to_pandas()
方法二:Azure Storage SDK + Pandas(自定义逻辑场景)
- 操作步骤:
- 在Azure ML Compute实例中安装依赖(若未预装):
pip install azure-storage-blob pandas pyarrow - 编写代码遍历并读取文件:
from azure.storage.blob import BlobServiceClient from azure.identity import DefaultAzureCredential import pandas as pd from io import BytesIO # 初始化Blob客户端(托管身份验证,无需硬编码密钥) blob_service_client = BlobServiceClient( account_url="https://你的存储账户名.blob.core.windows.net", credential=DefaultAzureCredential() ) container_client = blob_service_client.get_container_client("你的容器名") # 遍历并读取所有Parquet文件 all_dataframes = [] for blob in container_client.list_blobs(): if blob.name.endswith(".parquet"): blob_bytes = container_client.download_blob(blob.name).readall() df = pd.read_parquet(BytesIO(blob_bytes)) all_dataframes.append(df) # 合并为最终数据帧 final_df = pd.concat(all_dataframes, ignore_index=True)
- 在Azure ML Compute实例中安装依赖(若未预装):
方法三:Pipeline设计器低代码实现
- 操作步骤:
- 在Azure ML Pipeline设计器中,添加「Parquet Dataset」组件。
- 配置组件连接到你的存储容器,设置数据集模式为「文件夹」(而非单个文件)。
- 将组件输出直接连接到后续处理组件(如数据转换、模型训练),组件会自动合并所有Parquet文件为一个数据集。
优势:无需编写代码,适合低代码场景快速搭建流程。
内容的提问来源于stack exchange,提问作者user19941466
相关产品推荐
相关产品推荐

