當(dāng)我將 dask=1.2.2 與 pyarrow 0.11.1 一起使用時,我沒有觀察到這種行為。更新后(dask=2.10.1 和 pyarrow=0.15.1),當(dāng)我使用帶有給定 partition_on 和 write_index 參數(shù)的 to_parquet 方法時,我無法保存索引。在這里,我創(chuàng)建了一個顯示問題的最小示例: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 文檔中任何地方的描述。有誰知道如何在分區(qū)鑲木地板數(shù)據(jù)時保存索引?
2 回答

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

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