我使用 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 计算实例都在同一个虚拟网络下。
以下是我的问题:
- 如何避免两次下载parquet文件?
- 如何使安装过程更快?
我已经完成了这个线程,但那里的讨论没有结束
我使用的 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)