![](/img/trans.png)
[英]How can I speed up this python script to read and process a csv file?
[英]How can I read a large CSV file into Python with speed?
我正在尝试将〜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%。
您在问题中显示的代码可能根本不需要时间,因为您实际上并没有加载任何东西,只是设置了工作处方。 这需要多长时间取决于您指定的块大小。
实际加载要考虑两个主要瓶颈:
如果您在本地磁盘上,则对于前者您无能为力,并且您希望它只是一小部分。
即使默认情况下dask会在多个线程中执行,后者也可能会受到GIL的影响(这就是为什么它可能只显示使用一个线程的原因)。 您最好阅读有关不同调度程序的简要文档,并且即使您位于一台计算机上,也要混合使用线程和进程,并且应该尝试使用分布式调度程序。
最后,您可能根本不想“加载”数据,而是对其进行处理。 是的,您可以根据需要将Dask保留到内存中( dask.persist
,很有趣),但是请不要使用太多的工作程序来加载数据,这样您就可以将其放入客户端进程内存中的Pandas数据帧中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.