簡體   English   中英

在 Dask 中讀取 Parquet 文件會返回空數據框

[英]Reading Parquet files in Dask returns empty dataframe

我正在嘗試復制這個 datashader+parquet+dask+dash示例,以便對我自己的數據做類似的事情。 這是git代碼。

復制的步驟包括運行jupyter notebook以將 4 gig csv 文件轉換為 parquet 文件。 我可以毫無問題地運行此代碼,它會創建一個 parquet 目錄,其中包含許多 ~70 mb 大小的文件,但是當我嘗試讀取 parquet 文件時,它會返回一個空數據框(但具有正確的列)。 因此,在將 csv 讀入 dask 數據幀並進行一些處理后,我可以檢查 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

將其寫入鑲木地板:

# 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 

這是我第一次使用 dask 數據框和鑲木地板,它似乎應該可以工作,但我在這里可能缺少一些基本概念。

可復制的小代碼片段:

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 寫入鑲木地板然后讀取它?

我無法使用dask=2022.05.2重現錯誤。 可能有一些版本不兼容,所以我建議在專用環境中安裝 dask、pandas 和 fastparquet。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM