【发布时间】:2020-09-08 21:52:32
【问题描述】:
我有一个比我的记忆大得多的文本文件。我想按字典顺序对该文件的行进行排序。我知道如何手动操作:
- 分成适合内存的块
- 对块进行排序
- 合并块
我想用 dask 来做。我认为处理大量数据将是 dask 的一个用例。如何使用 Dask 对整个数据进行排序?
我的尝试
您可以执行generate_numbers.py -n 550_000_000,这将花费大约 30 分钟并生成一个 20 GB 的文件。
import dask.dataframe as dd
filename = "numbers-large.txt"
print("Create ddf")
ddf = dd.read_csv(filename, sep = ',', header = None).set_index(0)
print("Compute ddf and sort")
df = ddf.compute().sort_values(0)
print("Write")
with open("numbers-large-sorted-dask.txt", "w") as fp:
for number in df.index.to_list():
fp.write(f"{number}\n")
当我执行这个时,我得到
Create ddf
Compute ddf and sort
[2] 2437 killed python dask-sort.py
我猜这个进程被杀死是因为它消耗了太多的内存?
【问题讨论】:
标签: dask