我试图复制这个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。