AzureML:TabularDataset.to_pandas_dataframe() 在镶木地板文件为空时挂起
AzureML: TabularDataset.to_pandas_dataframe() hangs when parquet file is empty
我使用 Azure ML python API 创建了表格数据集。有问题的数据是分布在多个分区中的 Azure Data Lake Gen 2 中的一堆镶木地板文件(约 10K 个镶木地板文件,每个文件大小为 330 KB)。当我尝试使用 API TabularDataset.to_pandas_dataframe()
加载数据集时,如果数据集中包含空的 parquet 文件,它将永远继续(挂起)。如果表格数据集不包含那些空的 parquet 文件,TabularDataset.to_pandas_dataframe()
会在几分钟内完成。
通过空镶木地板文件,我的意思是如果我使用 pandas (pd.read_parquet()) 读取单个镶木地板文件,它会导致空 DF (df.empty = = 正确)。
我在处理提到的另一个问题时发现了根本原因 [here][1]
。
我的问题是如何使 TabularDataset.to_pandas_dataframe()
即使在有空镶木地板文件的情况下也能工作?
更新
该问题已在以下版本中修复:
- azureml-数据准备:3.0.1
- azureml 核心:1.40.0
您可以使用 on_error='null'
参数来处理空值。
您的声明将如下所示:
TabularDataset.to_pandas_dataframe(on_error='null', out_of_range_datetime='null')
或者,您可以在将文件传递给 to_pandas_dataframe
方法之前检查文件的大小。如果文件大小为 0
,请根据您的要求使用 python open
关键字将一些示例数据写入其中或忽略该文件。
感谢您的报告。
这是处理包含列但设置为空行的镶木地板文件时的错误。此问题已修复并将包含在下一个版本中。
不过,我无法重现多个文件的挂起问题,所以如果您能提供更多相关信息,那就太好了。
我使用 Azure ML python API 创建了表格数据集。有问题的数据是分布在多个分区中的 Azure Data Lake Gen 2 中的一堆镶木地板文件(约 10K 个镶木地板文件,每个文件大小为 330 KB)。当我尝试使用 API TabularDataset.to_pandas_dataframe()
加载数据集时,如果数据集中包含空的 parquet 文件,它将永远继续(挂起)。如果表格数据集不包含那些空的 parquet 文件,TabularDataset.to_pandas_dataframe()
会在几分钟内完成。
通过空镶木地板文件,我的意思是如果我使用 pandas (pd.read_parquet()) 读取单个镶木地板文件,它会导致空 DF (df.empty = = 正确)。
我在处理提到的另一个问题时发现了根本原因 [here][1]
。
我的问题是如何使 TabularDataset.to_pandas_dataframe()
即使在有空镶木地板文件的情况下也能工作?
更新 该问题已在以下版本中修复:
- azureml-数据准备:3.0.1
- azureml 核心:1.40.0
您可以使用 on_error='null'
参数来处理空值。
您的声明将如下所示:
TabularDataset.to_pandas_dataframe(on_error='null', out_of_range_datetime='null')
或者,您可以在将文件传递给 to_pandas_dataframe
方法之前检查文件的大小。如果文件大小为 0
,请根据您的要求使用 python open
关键字将一些示例数据写入其中或忽略该文件。
感谢您的报告。 这是处理包含列但设置为空行的镶木地板文件时的错误。此问题已修复并将包含在下一个版本中。
不过,我无法重现多个文件的挂起问题,所以如果您能提供更多相关信息,那就太好了。