关于达斯克。
我想以df的形式读取parquet文件,并运行groupby函数。
我的问题是,为什么要在此之前运行此代码?
from dask.distributed import Client, progress
client = Client()
client而不仅仅是
import dask.dataframe as dd
df = dd.read_parquet(r'C:\Users\ggg\mis_1.parquet')
g=df.groupby('id')['id'].count().compute() 对我来说,没有客户就更好了。
发布于 2022-03-14 17:54:09
您应该阅读此页面,比较调度程序:https://docs.dask.org/en/stable/scheduler-overview.html
如果您没有client,您将为您的操作使用默认的调度程序,这将是用于dataframe操作的线程调度程序。如果它的开销极低,并且通过查林进程内相同的内存空间来避免内存拷贝.然而,它并没有那么聪明,而且对于GIL-holding函数来说,它的工作效果也很差。如果它对你有效,请使用它!
分布式调度程序提供了更多的选项。您可以选择您的线程/进程混合,甚至有所有的调度程序和线程在进程中(这应该执行以及简单的线程调度程序。此外,它还通过仪表板提供了对内存管理和诊断的更多控制。当然,如果您确实需要在多台计算机上分发您的计算机,这是您唯一的选择。这个选项通常是更好的选择,所以通常是推荐的。但是,Client()只为您提供默认选项,这可能不是可选的。
发布于 2022-03-23 09:38:09
我试着检查它,所以我在100 M行表上运行了许多functions+compute()。与客户端(+选项)和非。
我没有发现任何在Client()中运行得更好的函数。不仅如此,在某些情况下,在Client()之后,我无法做以前工作良好的事情。
我在自己的笔记本上运行代码,而不是在云中运行,也许这就是原因.
https://stackoverflow.com/questions/71470336
复制相似问题