我对DASK还是很陌生,我正在尝试在私有云上建立一个分布式集群。现在,我有调度程序和一个工作程序,它们都在同一台机器上的同一Docker容器中运行。它们分别以dask-scheduler
和dask-worker tcp://localhost:8786
开始。
我正在从本地计算机连接到调度程序。为了简单起见,假设我在本地[目录C0]中运行IPython控制台。我正在跑步:
/home/my_user/local_directory
这很好。我可以进行一些操作,安排工作,from dask.distributed import Client
client = Client('scheduler_host:scheduler_port')
上的.compute()
也可以正常工作。
将结果保存到文件时出现问题。按照dataframes
中的示例运行时:
here
我希望csv文件(1..30.csv)将在本地import dask
import os
if not os.path.exists('data'):
os.mkdir('data')
df = dask.datasets.timeseries()
df.to_csv('data/*.csv')
目录中创建,即在本地计算机上的data
中创建。而是将文件保存在/home/my_user/local_directory/data
目录中的调度程序/工作器计算机上。用/home/my_user/local_directory/data
替换最后一行时,也会发生同样的情况。
[用df.to_csv('data/test.csv', single_file=True)
替换该行会发生更有趣的事情。在df.to_parquet('test.parquet')
的情况下,将在本地计算机上创建一个空的parquet
目录,并将结果存储在调度程序/工作器的test.parquet
中。如果无法从本地访问目录,也会引发错误。
根据/home/my_user/local_directory/test.parquet
,运行this应该将文件保存在本地。但是根据to_parquet
,文件是在辅助计算机上本地创建的。如果第二个是正确的,为什么要在本地创建实木复合地板目录?为什么工人在存储数据时会使用我的本地路径?
这是应该如何运作的?也许我的设置有问题?请指教!先感谢您!
Dask数据框存储功能可保存工作人员的结果。通常,人们将Dask与全局文件系统一起使用,例如NFS,HDFS或云对象存储。
[如果要在本地存储东西,则应在单台计算机上使用Dask,或者如果结果较小,则可以调用this将结果作为熊猫数据框返回到本地计算机,然后使用熊猫存储功能。