亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用帶有分區的 dask.dataframe.to_parquet() 時丟失索引信息

使用帶有分區的 dask.dataframe.to_parquet() 時丟失索引信息

泛舟湖上清波郎朗 2022-07-19 15:52:56
當我將 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


查看完整回答
反對 回復 2022-07-19
?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

我似乎試圖回避這個問題,但我的建議是沿著索引進行分區。這也將確保分區中的非重疊索引。

這就像dd.from_pandas(data_to_export, npartitions=3)然后跳過partition_onwrite_index進入to_parquet。必須對索引進行排序。

這會保留索引并正確設置分區。

請注意,您不能保證獲得您請求的確切分區數partitions,尤其是對于小型數據集。


查看完整回答
反對 回復 2022-07-19
  • 2 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號