當我將 dask=1.2.2 與 pyarrow 0.11.1 一起使用時,我沒有觀察到這種行為。更新后(dask=2.10.1 和 pyarrow=0.15.1),當我使用帶有給定 partition_on 和 write_index 參數的 to_parquet 方法時,我無法保存索引。在這里,我創建了一個顯示問題的最小示例:from datetime import timedeltafrom pathlib import Pathimport dask.dataframe as ddimport pandas as pdREPORT_DATE_TEST = pd.to_datetime('2019-01-01').date()path = Path('/home/ludwik/Documents/YieldPlanet/research/trials/')observations_nr = 3dtas = range(0, observations_nr)rds = [REPORT_DATE_TEST - timedelta(days=days) for days in dtas]data_to_export = pd.DataFrame({ 'report_date': rds, 'dta': dtas, 'stay_date': [REPORT_DATE_TEST] * observations_nr, }) \ .set_index('dta')data_to_export_dask = dd.from_pandas(data_to_export, npartitions=1)file_name = 'trial.parquet'data_to_export_dask.to_parquet(path / file_name, engine='pyarrow', compression='snappy', partition_on=['report_date'], write_index=True )data_read = dd.read_parquet(path / file_name, engine='pyarrow')print(data_read)這使:| | stay_date |dta| report_date||0| 2019-01-01 | 2 | 2018-12-30 ||0| 2019-01-01 | 1 | 2018-12-31 ||0| 2019-01-01 | 0 | 2019-01-01 |我沒有看到 dask 文檔中任何地方的描述。有誰知道如何在分區鑲木地板數據時保存索引?
2 回答

牛魔王的故事
TA貢獻1830條經驗 獲得超3個贊
問題出在 pyarrow 的后端。我在他們的 JIRA 網頁上提交了錯誤報告: https ://issues.apache.org/jira/browse/ARROW-7782

眼眸繁星
TA貢獻1873條經驗 獲得超9個贊
我似乎試圖回避這個問題,但我的建議是沿著索引進行分區。這也將確保分區中的非重疊索引。
這就像dd.from_pandas(data_to_export, npartitions=3)
然后跳過partition_on
和write_index
進入to_parquet
。必須對索引進行排序。
這會保留索引并正確設置分區。
請注意,您不能保證獲得您請求的確切分區數partitions
,尤其是對于小型數據集。
添加回答
舉報
0/150
提交
取消