【问题标题】:Can't use wildcard with Azure Data Lake Gen2 files无法对 Azure Data Lake Gen2 文件使用通配符
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-02-25
    • 2019-11-26
    • 1970-01-01
    • 2021-03-06
    • 2019-12-02
    • 1970-01-01
    • 2020-06-14
    • 2019-09-10
    • 2020-09-22
    相关资源
    最近更新 更多