Python Dask 'Metadata parse failed' 尝试 read_parquet 时出错

Python Dask 'Metadata parse failed' error when trying to read_parquet

我有一个包含多个 .parquet 文件的数据文件夹,这些文件是使用 pandas 和 pyarrow 转换的 .csv 文件。所有文件都有一个名为 'Timestamp' 的日期时间索引,以及名为 'Open'、'High'、'Low'、'Close'、'Volume' 的五个列相同的 dtype=int32.

我只想将它们全部加载到一个 Dask.Dataframe 中。这是一个代码片段。

import os
import pyarrow as pa
import pyarrow.parquet as pq
import dask.dataframe as dd


user = os.getlogin()
data_path = 'C:\Users\%s\data\' % user

ds = dd.read_parquet(data_path)  # error
ds = dd.read_parquet(data_path, index='Timestamp')  # error

但是这样做 returns 我的错误 'fastparquet.util.ParquetException: Metadata parse failed: # data_path'

所以我尝试手动访问单个文件的元数据。

import glob

files = ['%s' % s for s in glob.glob(data_path + '*.parquet')]

for file in files:
    print(pq.read_metadata(file))  # no error returned

ds = dd.read_parquet(files)  # error
ds = dd.read_parquet(files, index='Timestamp')  # error

怎么了?

要使用箭头而不是 fastparquet 读取数据,您需要

ds = dd.read_parquet(data_path, engine='arrow')

因为数据是由箭头写入的,所以应该可以。

数据 使用 fastparquet 加载是令人担忧的,可能是一个错误。我注意到您正在使用 Windows 路径,所以这可能是问题所在。我鼓励您尝试使用 https://github.com/dask/fastparquet/pull/232 ,看看它是否能为您解决问题。