发布数据集
目录
发布数据集¶
一个 已发布数据集 (published dataset) 是指已发布到集群中的 Dask 集合或 future 列表的命名引用。它对任何客户端都可见,并能持续存在于单个会话范围之外。
发布数据集在以下情况下非常有用:
你想与同事共享计算结果
你想在不同的交互式会话之间将结果持久化到集群上
动机示例¶
在此示例中,我们从 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']
此映射在连接到同一调度器的所有客户端之间全局共享。
注意事项¶
已发布的集合不会自动持久化。如果您发布一个未持久化的集合,那么其他人仍然可以从调度器获取该集合,但对该集合的操作将从头开始。这允许您发布数据视图,这些视图不会永久占用集群内存,但如果您期望“发布”会自动使计算好的数据集快速可用,则可能会感到意外。
任何客户端都可以发布或取消发布数据集。
发布太多大型数据集会很快消耗集群的 RAM。
API¶
|
向调度器发布命名数据集 |
|
列出调度器上可用的命名数据集 |
|
从调度器获取指定的命名数据集(如果存在)。 |
|
从调度器移除指定的命名数据集 |