【发布时间】:2021-02-12 08:56:35
【问题描述】:
我能够将我的 Data Lake Gen2 存储帐户与我的 Azure ML 工作区正确连接。当尝试从数据存储区读取一组特定的 Parquet 文件时,它会持续很长时间并且不会加载它。
代码如下:
from azureml.core import Workspace, Datastore, Dataset
from azureml.data.datapath import DataPath
ws = Workspace(subscription_id, resource_group, workspace_name)
datastore = Datastore.get(ws, 'my-datastore')
files_path = 'Brazil/CommandCenter/Invoices/dt_folder=2020-05-11/*.parquet'
dataset = Dataset.Tabular.from_parquet_files(path=[DataPath(datastore, files_path)], validate=False)
df = dataset.take(1000)
df.to_pandas_dataframe()
每个 Parquet 文件都有大约。 300KB。文件夹中有 200 个 - 通用且直接来自 Databricks。奇怪的是,当我尝试从完全相同的文件夹中读取一个 parquet 文件时,它运行顺利。
其次,其他包含少于 20 个文件的文件夹也将顺利运行,因此我排除了这是由于某些连接问题造成的可能性。更奇怪的是,我尝试了如下通配符:
# files_path = 'Brazil/CommandCenter/Invoices/dt_folder=2020-05-11/part-00000-*.parquet'
理论上这只会引导我到00000 文件,但它也不会加载。超级诡异。
为了克服这个问题,我尝试通过 ADLFS 与 Dask 连接到数据湖,并且它可以正常工作。我知道这可能是处理“大型”数据集/文件的一种解决方法,但是直接从 Dataset 类方法中进行处理会非常好。
有什么想法吗?
编辑:错字
【问题讨论】:
-
1) 您使用的是什么 SDK 版本? 2) 你能包括你得到的错误的堆栈跟踪吗?
-
@AndersSwanson SDK 版本 1.17.0。并且没有特别出现错误。它只是永远停留在 Jupyter [ * ] 上的运行标志中
-
经过进一步调查,几乎可以肯定该问题与目录中的“=”字符串有关。
标签: azure machine-learning azure-machine-learning-service