2017-06-07 6 views
1

ローカルにサンプルデータセットがあり、クラスタ上でいくつかの基本操作を実行しようとしています。エラー - ワーカーからのエラーそのようなファイルまたはディレクトリがありません: 'filepath'

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') 

クライアントは、順番に(他のマシン上で)2人の労働者に接続されているスケジューラに接続されています。

私の質問はかなり簡単かもしれません。

  1. このcsvファイルは他のワーカーノードに存在する必要がありますか?

    ファイルが見つかりませんでした。また、

    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" 
    

を使用して

  • は、私はここに多くのものを混合だし、私の理解がアップ混乱さを考えて、この Loading local file from client onto dask distributed clusterhttp://distributed.readthedocs.io/en/latest/manage-computation.html

    を参照してくださいました。 本当にありがとうございます。

  • 答えて

    1

    はい、ここでdask.dataframeは、クライアントコードで参照しているファイルに作業者がアクセスできることを前提としています。これが当てはまらない場合は、ローカルマシンで明示的にデータを読んで、それをワーカーに散らすことになります。

    パンダのデータフレームではなくデータフレームを散乱することを除いて、これを正確に実行しようとしているようです。パンダのデータを実際にディスクからロードしてから、ディスクに散布する必要があります。あなたのデータがメモリに収まるなら、あなたはあなたが今やっている正確に何を行うことができる必要がありますが、あなたのデータは、あなたが使用して検討するかもしれないが大きすぎる場合pd.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 
    

    でdd.read_csv呼び出しを置き換えますデータをローカルに読み込んで、データをクラスタごとに読んで分散させます。

    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) 
    
    関連する問題