在Dask中读取Parquet文件返回空数据帧



我试图复制这个datashader+parquet+dask+dash示例,以便与我自己的数据做类似的事情。下面是git代码:

复制的步骤包括运行jupyter notebook,以便将4gig csv文件转换为parquet文件。我可以毫无问题地运行这段代码,它创建了一个parquet目录,其中包含许多~70 mb大小的文件,但是当我试图读取parquet文件时,它返回一个空数据帧(但是具有正确的列)。因此,在将csv读入任务数据框并进行一些处理后,我可以检查head():

ddf.head()
radio   mcc net area    cell    unit    lon lat range   samples changeable  created updated averageSignal   x_3857  y_3857
0   UMTS    262 2   801 86355   0   13.285512   52.522202   1000    7   1   1282569574000000000 1300155341000000000 0   1.478936e+06    6.895103e+06
1   GSM 262 2   801 1795    0   13.276907   52.525714   5716    9   1   1282569574000000000 1300155341000000000 0   1.477979e+06    6.895745e+06
2   GSM 262 2   801 1794    0   13.285064   52.524000   6280    13  1   1282569574000000000 1300796207000000000 0   1.478887e+06    6.895432e+06
3   UMTS    262 2   801 211250  0   13.285446   52.521744   1000    3   1   1282569574000000000 1299466955000000000 0   1.478929e+06    6.895019e+06
4   UMTS    262 2   801 86353   0   13.293457   52.521515   1000    2   1   1282569574000000000 1291380444000000000 0   1.479821e+06    6.894977e+06

写到parquet:

# Write parquet file to ../data directory
os.makedirs('./data', exist_ok=True)
parquet_path = './data/cell_towers.parq'
ddf.to_parquet(parquet_path, 
compression='snappy',  
write_metadata_file = True)

并尝试读取拼花:

ddy = dd.read_parquet('./data/cell_towers.parq' ) 

,但它返回一个空的数据框,但有正确的列名:

ddy.head(3)
> radio mcc net area    cell    unit    lon lat range   samples changeable  created updated averageSignal   x_3857  y_3857
len(ddy)
> 0 

这是我第一次使用任务数据框架和parquet,它似乎应该只是工作,但可能有一些基本的概念,我在这里错过了。

可复制的小代码片段:

import pandas as pd
import dask.dataframe as dd
ddfx = dd.from_pandas(pd.DataFrame(range(10), columns=['A']), npartitions=2)
parquet_path = './dummy.parq'
ddfx.to_parquet(parquet_path, 
compression='snappy',  
write_metadata_file = True)
ddfy = dd.read_parquet('./dummy.parq' ) 
print('Input DDF length: {0} . Output DDF length: {1}'.format(len(ddfx), len(ddfy)))

输入DDF长度:10。输出DDF长度:0

我如何写一个DDF到parquet然后读取它?

我无法使用dask=2022.05.2再现错误。可能会有一些版本不兼容,所以我建议在专用环境中安装dask, pandas和fastparquet。

最新更新