DASK dataframe.to_csv将文件存储在辅助程序上,而不是在本地存储

问题描述 投票:0回答:1

我对DASK还是很陌生,我正在尝试在私有云上建立一个分布式集群。现在,我有调度程序和一个工作程序,它们都在同一台机器上的同一Docker容器中运行。它们分别以dask-schedulerdask-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-distributed
1个回答
0
投票

Dask数据框存储功能可保存工作人员的结果。通常,人们将Dask与全局文件系统一起使用,例如NFS,HDFS或云对象存储。

[如果要在本地存储东西,则应在单台计算机上使用Dask,或者如果结果较小,则可以调用this将结果作为熊猫数据框返回到本地计算机,然后使用熊猫存储功能。

© www.soinside.com 2019 - 2024. All rights reserved.