尝试read_parquet

时间:2017-10-23 16:21:10

标签: python parquet dask

我有一个包含多个.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

但是这样做会返回错误'fastparquet.util.ParquetException:元数据解析失败:#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

怎么了?

1 个答案:

答案 0 :(得分:1)

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

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

由于箭头写的数据应该可以工作。

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