python - Azure ML 文件数据集 mount() 速度慢且下载数据两次

标签 python azure azure-machine-learning-service azureml-python-sdk

我使用 Azure ML python API 创建了一个 Fie 数据集。所讨论的数据是驻留在跨多个分区的 Azure Data Lake Gen 2 中的一堆 parquet 文件(约 10K parquet 文件,每个文件大小为 330 KB)。然后,我尝试将数据集挂载到 AML 计算实例中。在此安装过程中,我观察到每个 parquet 文件已在计算实例的/tmp 目录下下载两次,并在控制台日志中打印以下消息:

Downloaded path: /tmp/tmp_3qwqu9u/c2c69fd1-9ded-4d69-b75a-c19e1694b7aa/<blob_path>/20211203.parquet is different from target path: /tmp/tmp_3qwqu9u/c2c69fd1-9ded-4d69-b75a-c19e1694b7aa/<container_name>/<blob_path>/20211203.parquet

为数据集一​​部分的每个 Parquet 文件打印此日志消息。

此外,安装数据集的过程非常慢:大约 10K 个 parquet 文件(每个文件大小为 330 KB)需要 44 分钟。

Jupyter Lab中的“%%time”命令显示大部分时间已用于IO过程?

CPU times: user 4min 22s, sys: 51.5 s, total: 5min 13s
Wall time: 44min 15s

注意:Data Lake Gen 2 和 Azure ML 计算实例位于同一虚拟网络下。

这是我的问题:

  1. 如何避免两次下载 parquet 文件?
  2. 如何加快安装过程?

我已经浏览过this thread ,但那里的讨论没有结束

我使用的Python代码如下:

data = Dataset.File.from_files(path=list_of_blobs, validate=True)
dataset = data.register(workspace=ws, name=dataset_name, create_new_version=create_new_version)
mount_context = None
try:
    mount_context = dataset.mount(path_to_mount)
    # Mount the file stream
    mount_context.start()
except Exception as ex:
    raise(ex)

df = pd.read_parquet(path_to_mount)

最佳答案

最可靠的选项是直接从 AzureBlobDatastore 下载。您需要知道数据存储和相对路径,这是通过打印数据集描述获得的。即

ws = Workspace.from_config()
dstore = ws.datastores.get(dstore_name)
target = (dstore, dstore_path)
with tempfile.TemporaryDirectory() as tmpdir:
    ds = Dataset.File.from_files(target)
    ds.download(tmpdir)
    df = pd.read_parquet(tmpdir)

方便的选项是流式传输表格数据集。请注意,您无法控制文件的读取方式(Microsoft 转换器有时可能无法按您的预期工作)。这是模板:

ds = Dataset.Tabular.from_parquet_files(target)
df = ds.to_pandas_dataframe()

关于python - Azure ML 文件数据集 mount() 速度慢且下载数据两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71013850/

相关文章:

python - 生成的 Django 查询集有效,但在 Django 中运行失败

linux - Azure Linux B1s VM - 已安装 Jenkins 服务器,但主页未打开

machine-learning - 我的实验(试图预测汽车销量)有什么问题?

python - 如何表示范围的动态列表?

python - 从内置类型派生时如何设置 "the"值?

python - 在卫星 map 上绘制数据

azure - 如何避免在追加字符串连接器逻辑应用程序中添加重复字符串

powershell - azure函数powershell从存储队列读取并写入存储表

azure - 如何处理 Azure 机器学习工作室中的缺失值

r - 机器学习服务器的 Max R 版本