我正在尝试将〜67 gb数据帧(6,000,000个特征乘以2300行)加载到dask中以进行机器学习。我正在AWS上使用96核心机器,希望将其用于实际机器学习。但是,Dask在单个线程中加载CSV。它已经用了整整24小时,还没有加载。
#I tried to display a progress bar, but it is not implemented on dask's load_csv
from dask.diagnostics import ProgressBar
pbar = ProgressBar()
pbar.register()
df = dd.read_csv('../Larger_than_the_average_CSV.csv')
是否有更快的方法可以将其加载到Dask中并使其持久化?我应该切换到其他技术(Scala上的Spark还是PySpark?)
Dask可能仍在加载它,因为我发现top
中的CPU利用率稳定地达到了100%。
答案 0 :(得分:0)
您在问题中显示的代码可能根本不需要时间,因为您实际上并没有加载任何东西,只是设置了工作处方。这需要多长时间取决于您指定的块大小。
实际加载要考虑两个主要瓶颈:
如果您在本地磁盘上,则对前者您无能为力,并且您希望它只是一小部分。
后者可能会受到GIL的影响,即使dask默认情况下会在多个线程中执行(这就是为什么它可能只显示一个线程的原因)。您最好阅读有关不同调度程序的简要文档,并且即使您位于一台计算机上,也要混合使用线程和进程,并且应该尝试使用分布式调度程序。
最后,您可能根本不想“加载”数据,而是对其进行处理。是的,如果您愿意(dask.persist
,您可以有趣地使用Dask保留到内存中,但是请不要使用太多的工作程序来加载数据,这样您就可以将其放入客户端进程内存中的Pandas数据框中。 / p>