将 Pandas DataFrame 注册到 Azure Blob 存储时指定自定义存储路径

问题描述 投票:0回答:1

我想将 Pandas 数据框作为表格数据集注册到 Azure Blob 存储中。我不想每次注册该数据集的新版本时都创建唯一的路径。其次,每当我上传数据集时,我需要指定取决于日期的路径。例如。如果我今天上传,路径应该是

'data/{}'.format(current_date)

下面是我用来满足这两个要求的代码。

dataset = Dataset.Tabular.register_pandas_dataframe(
    dataframe=df,
    target=(ws.get_default_datastore(), 'data/{}'.format(current_date)),
    name='test dataset',
    description='test dataset',
    make_target_path_unique = False
)

target
参数应该为每一天创建一个唯一的文件夹。
make_target_path_unique
将停止创建随机存储 URI 路径。

上面的代码失败了

TypeError: register_pandas_dataframe() got an unexpected keyword argument 'make_target_path_unique'

我不希望存储 URI 在注册该数据集的另一个版本时随机更改。例如。在

https://xxxx.blob.core.windows.net/azureml-blobstore-xxx/managed-dataset/xxxx/
最后 4 个
xxxx
随机变化。我该如何解决这个问题?

python pandas azure azure-blob-storage azure-machine-learning-service
1个回答
0
投票

您使用 python sdk v2,您需要传递数据的路径。

在这里,我的想法是将 pandas 数据框保存到 csv 文件,并以当前日期作为文件夹名称,然后传递该通道以创建数据资产。

保存数据框。

import os
os.mkdir(current_date)
df.to_csv(f"./{current_date}/data.csv")

接下来创建数据资产。

from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes

ml_client = MLClient(
    DefaultAzureCredential(), subscription_id, resource_group, workspace
)

my_data = Data(
    path=f"./{current_date}",
    type=AssetTypes.URI_FOLDER,
    description="csvs",
    name="pandas_data",
    version="1",
)

dataref = ml_client.data.create_or_update(my_data)
dataref.path

输出:

enter image description here

在这里,您将获得每天和每次数据更改的唯一路径。

注意:不要在本地保存数据帧,而是将其保存在与 ml 工作区关联的存储帐户中。请参阅此堆栈解决方案了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.