不能对 Azure 数据湖第 2 代文件使用通配符



我能够将我的Data Lake Gen2存储帐户正确连接到我的Azure ML Workspace。当试图从数据存储中读取一组特定的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。奇怪的是,当我尝试从完全相同的文件夹中读取一个镶木地板文件时,它运行得很顺利。

其次,其他包含少于20个文件的文件夹也会顺利运行,所以我排除了这是由于某些连接问题造成的可能性。更奇怪的是,我尝试了如下通配符:

# files_path = 'Brazil/CommandCenter/Invoices/dt_folder=2020-05-11/part-00000-*.parquet'

理论上,这只会将我引导到00000文件,但它也不会加载。超级奇怪。

为了克服这一点,我尝试通过Dask的ADFS连接到数据湖,它确实有效。我知道这可以是处理";"大";数据集/文件,但直接从Dataset类方法中进行操作会非常好。

有什么想法吗?

编辑:打字错误

如果使用以下命令更新某些包,则可以解决此问题:

pip install --upgrade azureml-dataprep azureml-dataprep-rslex

正如微软的一些人告诉我的那样,这将在下一次azureml.core更新中得到修复。

最新更新