错误 - 来自worker的错误没有这样的文件或目录:'filepath'

时间:2017-06-07 13:48:51

标签: python dask

我的本​​地存在一个示例数据集,我正在尝试在群集上执行一些基本的操作。

    import dask.dataframe as ddf
    from dask.distributed import Client 
    client = Client('Ip address of the scheduler')
    import dask.dataframe as ddf
    csvdata = ddf.read_csv('Path to the CSV file')

客户端连接到调度程序,调度程序又连接到两个工作程序(在其他计算机上)。

我的问题可能非常简单。

  1. 此csv文件是否应出现在其他工作节点上?

    我好像找不到文件错误。

  2. 使用,

    futures=client.scatter(csvdata)
    x = ddf.from_delayed([future], meta=df)
    #Price is a column in the data
    df.Price.sum().compute(get=client.get) #returns" dd.Scalar<series-..., dtype=float64>" How do I access it?
    client.submit(sum, x.Price)  #returns "distributed.utils - ERROR - 6dc5a9f58c30954f77913aa43c792cc8"
    
  3. 另外,我确实提到了这个 Loading local file from client onto dask distributed clusterhttp://distributed.readthedocs.io/en/latest/manage-computation.html

    我认为我在这里混淆了很多东西而且我的理解混乱了。 任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

是的,这里dask.dataframe假设您的工作人员也可以访问您在客户端代码中引用的文件。如果不是这种情况,那么您将在本地计算机中明确地读取数据,并将其分散给您的工作人员。

看起来你正在尝试做到这一点,除了你散布数据帧而不是pandas数据帧。在散布之前,您实际上必须从磁盘中具体加载pandas数据。如果您的数据适合内存,那么您应该能够完成您现在正在做的事情,但用pd.read_csv替换dd.read_csv调用

csvdata = pandas.read_csv('Path to the CSV file')
[future] = client.scatter([csvdata])
x = ddf.from_delayed([future], meta=df).repartition(npartitions=10).persist()
#Price is a column in the data
df.Price.sum().compute(get=client.get)  # Should return an integer

如果您的数据太大,那么您可以考虑在本地使用dask来逐个读取数据并将数据分散到您的群集中。

import dask.dataframe as dd
ddf = dd.read_csv('filename')
futures = ddf.map_partitions(lambda part: c.scatter([part])[0]).compute(get=dask.get)  # single threaded local scheduler

ddf = dd.from_delayed(list(futures), meta=ddf.meta)