发布数据集
内容
发布数据集¶
一个 已发布的集合 是对已发布到集群的 Dask 集合或未来列表的命名引用。它对任何客户端都可见,并且超出了单个会话的范围。
发布数据集在以下情况下是有用的:
你想与同事共享计算
您希望在交互式会话之间在集群上持久化结果
激励示例¶
在这个例子中,我们从S3加载一个dask.dataframe,对其进行操作,然后将结果发布。
连接与加载
from dask.distributed import Client
client = Client('scheduler-address:8786')
import dask.dataframe as dd
df = dd.read_csv('s3://my-bucket/*.csv')
df2 = df[df.balance < 0]
df2 = client.persist(df2)
>>> df2.head()
name balance
0 Alice -100
1 Bob -200
2 Charlie -300
3 Dennis -400
4 Edith -500
发布
为了与同事共享此集合,我们将其命名为 'negative_accounts'
client.publish_dataset(negative_accounts=df2)
从不同客户端加载已发布的数据集
现在,任何其他客户端都可以连接到调度器并检索这个已发布的数据集。
>>> from dask.distributed import Client
>>> client = Client('scheduler-address:8786')
>>> client.list_datasets()
['negative_accounts']
>>> df = client.get_dataset('negative_accounts')
>>> df.head()
name balance
0 Alice -100
1 Bob -200
2 Charlie -300
3 Dennis -400
4 Edith -500
这使用户能够轻松共享结果。它还允许重要且常用的数据集在单个会话之外持久化。即使所有请求它们的客户端都已断开连接,已发布的数据集仍继续驻留在分布式内存中。
字典接口¶
或者,您可以使用客户端上的 .datasets
映射来发布、列出、获取和删除全局数据集。
>>> client.datasets['negative_accounts'] = df
>>> list(client.datasets)
['negative_accounts']
>>> df = client.datasets['negative_accounts']
此映射在连接到同一调度程序的所有客户端之间全局共享。
注释¶
发布的集合不会自动持久化。如果你发布了一个未持久化的集合,其他人仍然可以从调度器中获取该集合,但对该集合的操作将从头开始。这允许你发布不永久占用集群内存的数据视图,但如果你期望“发布”能自动使计算数据集快速可用,这可能会令人惊讶。
任何客户端都可以发布或取消发布数据集。
发布过多的大型数据集会迅速消耗集群的内存。
API¶
|
将命名数据集发布到调度器 |
|
列出调度器上可用的命名数据集 |
|
如果存在,从调度器获取命名数据集。 |
|
从调度器中移除命名数据集 |