私は適切なIAMロールを持つec2インスタンスで稼働するワーカーとs3から多くのcsvファイルを読み込もうとします(他のスクリプトと同じバケットから読むことができます)。 私は、このコマンドを使用して、プライベートバケットから自分のデータを読み取るしようとすると:ec2ワーカーのd3 s3アクセス
client = Client('scheduler-on-ec2')
df = read_csv('s3://xyz/*csv.gz',
compression='gzip',
blocksize=None,
#storage_options={'key': '', 'secret': ''}
)
df.size.compute()
データは(ローカルPythonインタプリタではなく、労働者が)ローカルで読まように見えるされ、その後、労働者(またはスケジューラに送信されますか? )をローカルインタプリタが受け取り、労働者がチャンクを受け取ると、計算を実行して結果を返します。 storage_options
で鍵と秘密を渡すかどうかは同じです。
storage_options={'anon': True}
でパブリックs3バケット(ニューヨークのタクシーデータ)から読んだ場合、すべてが問題なく表示されます。
問題がどのようなものだと思いますが、私は労働者がs3から直接読んでもらうために何を変えなければなりませんか?
s3fsが正しくインストールされており、これらはDASKに応じてサポートのファイルシステムです:何かがスケジューラにインタプリタからアップロードされるよう監視するネットワークインターフェイスの後
>>>> dask.bytes.core._filesystems
{'file': dask.bytes.local.LocalFileSystem,
's3': dask.bytes.s3.DaskS3FileSystem}
更新
、それが見えます。データフレーム(またはバッグ)内にパーティションが増えるほど、データがスケジューラに送信されます。私はそれが計算グラフかもしれないと思ったが、それは本当に大きい。 12ファイルの場合は2〜3MB、30ファイルの場合は20MB、大きなデータの場合(150ファイル)、スケジューラに送信するには時間がかかりすぎます。このデータ量を占めるスケジューラーには、何が送信されていますか?
>このデータ量を占めるスケジューラには他に何が送信されていますか? 私が知る限り。何もない。再現性のある[最小限の失敗例](http://stackoverflow.com/help/mcve)を作成できる場合は、Githubに何かを提出することをお勧めします。私がこの問題を試すと、すべてうまく動作します。あなたは[ダスクグラフを手動で調べる]ことができます(http://dask.pydata.org/en/latest/inspect.html)。 – MRocklin