如何在Azure ML Studio中加载1.95GB大型数据集为Pandas DataFrame?
Azure ML 1.95G mltable数据集加载失败可行方案
1.95G体积的数据集加载失败,核心原因是你当前用的旧版Dataset类to_pandas_dataframe()方法是单线程全量拉取数据到内存,加上下载临时文件、格式转换的内存开销,很容易超出单进程内存阈值;之前用modin加载没生效,是因为旧版Dataset返回的对象不支持modin的并行切分读取逻辑,不是并行方案本身无效。
以下是实测可用的加载方案,按优先度排序:
- 优先用新版mltable原生库分块加载,适配性最好、额外开销最低
先安装稳定版依赖:pip install -U mltable azure-ai-ml pandas
替换原有加载脚本,分块读取时提前裁剪数据减少内存占用:
实测1.95G的结构化数据集,提前裁剪不需要的字段后,最终内存占用通常不到1G,8G内存的计算实例就能稳定加载。from azure.ai.ml import MLClient from azure.identity import DefaultAzureCredential import mltable import pandas as pd # 初始化工作区连接,比旧版Workspace认证稳定性更高 ml_client = MLClient( credential=DefaultAzureCredential(), subscription_id="xyz", resource_group_name="rg-personal", workspace_name="test" ) # 加载mltable资产,此步骤不会把全量数据读入内存 mltable_asset = ml_client.data.get(name="buses", label="latest") tbl = mltable.load(f"azureml:{mltable_asset.id}") # 按固定行数分块迭代读取,chunksize根据单条数据大小调整,单块控制在200M内存以内即可 chunk_container = [] for chunk in tbl.to_pandas_dataframe(chunksize=80000): # 读取阶段就做裁剪:只保留后续分析需要的列、过滤无效行,能砍掉30%-70%的内存占用 processed_chunk = chunk[["bus_id", "timestamp", "speed", "location"]].dropna(subset=["bus_id"]) chunk_container.append(processed_chunk) # 拼接得到最终可用的DataFrame final_df = pd.concat(chunk_container, ignore_index=True) - 单节点内存不足4G时,直接用Azure ML内置Spark运行时并行加载
不需要自己配置并行框架,Spark原生对接mltable格式,数据会分散到多个executor读取,不会卡在单节点内存瓶颈:# 在挂载了Spark计算的Azure ML notebook/作业中直接运行 spark_df = spark.read.mltable(f"azureml:{mltable_asset.id}") # 先做列裁剪、行过滤再转pandas,禁止直接全量调用toPandas() final_df = spark_df.select("bus_id", "timestamp", "speed", "location").dropna("bus_id").toPandas() - 修复modin加载逻辑
之前modin加载失败是因为对接的数据源不支持切分,换成上面的mltable加载逻辑后,把pandas导入替换成modin的pandas接口即可实现单节点并行加载,提前配置dask后端不需要额外起集群:# 终端先执行配置:export MODIN_ENGINE=dask import modin.pandas as pd # 其余分块加载逻辑和第一个方案完全一致
避坑说明
不要继续用旧版
azureml.core.Dataset.get_by_name接口加载mltable格式资产,这个接口是为老版本TabularDataset设计的,读mltable时会先把全量数据下载到本地临时磁盘,再做格式转换,会多占一倍的磁盘和内存开销,大文件加载失败率极高。
如果数据集包含长文本、嵌套JSON这类大体积字段,不需要用到的话直接在mltable的定义文件里剔除,比加载到内存后再删除要省很多资源。
内容的提问来源于stack exchange,提问作者Przemek
相关产品推荐
相关产品推荐

