我有一个包含多个.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
怎么了?
答案 0 :(得分:1)
要使用箭头而非fastparquet读取数据,您需要
ds = dd.read_parquet(data_path, engine='arrow')
由于箭头写的数据应该可以工作。
数据不加载fastparquet的数据是关注的,可能是一个错误。我注意到您使用的是Windows路径,因此这可能是问题所在。我鼓励您尝试使用https://github.com/dask/fastparquet/pull/232,看看它是否能为您解决问题。