apache / apache/arrow

Conversion from one dataset to another that will not fit in memory?

未關閉
#12,653 6 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
C++
星號
17.1k
分支
4.3k
平均合併
3 天 20 小時
30 天內合併 PR
94

描述

Having found the following description in the documentation, I tried the operation of scanning a dataset larger than memory and writing it to another dataset.

https://arrow.apache.org/docs/python/dataset.html#writing-large-amounts-of-data

> The above examples wrote data from a table. If you are writing a large amount of data you may not be able to load everything into a single in-memory table. Fortunately, the write_dataset() method also accepts an iterable of record batches. This makes it really simple, for example, to repartition a large dataset without loading the entire dataset into memory:

```python
import pyarrow.dataset as ds

input_dataset = ds.dataset("input")
ds.write_dataset(inpute_dataset.scanner(), "output", format="parquet")
```

```r
arrow::open_dataset("input") |>
arrow::write_dataset("output")
```

But both Python and R on Windows crashed due to lack of memory. Am I missing something?
Is there a recommended way to convert one dataset to another without running out of computer memory?

貢獻指南

開啟貢獻指南

研究方向

從 Python 資料集文件中關於寫入大量資料的部分開始,並在 Windows 上重現 scanner-to-write_dataset 範例;將其與 R 的 open_dataset |> write_dataset 範例進行比較。檢查任一有文件記錄的轉換在輸入大於記憶體時是否會崩潰,並在有文件記錄的操作完成且未耗盡記憶體,或該限制已獲得明確記錄時,認為 issue 已完成。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
python, r
領域
data-engineering
Issue 類型
缺陷
難度
4/5
預估耗時
3-5 天
活躍度
停滯
描述清晰度
基本清楚
新手友好度
30/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。