問題タブ [dask-distributed]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dask - daskデータフレームを変更する安全でパフォーマンスの高い方法
データ ワークフローの一部として、dask データフレーム列のサブセットの値を変更し、結果をさらに計算するために渡す必要があります。特に、列のマッピングとパーティションのマッピングの 2 つのケースに興味があります。データを操作するための推奨される安全でパフォーマンスの高い方法は何ですか? 各ホストに複数のワーカープロセスがあるクラスターで分散セットアップを実行しています。
ケース1。
実行したい:
これはデータ系列を返すので、元のデータフレームは変更されていないと仮定します。たとえば、列をデータフレームに戻すのは安全dataframe['column']=res
ですか? おそらくそうではありません。.copy()でコピーを作成し、結果を次のように割り当てる必要があります。
それを行う他の推奨される方法はありますか?
ケース2
データフレームのパーティションをマップする必要があります:
mapping_func()内でpartition[column].map
、リスト内包表記を使用するか、単に作成することにより、選択した列の値を変更したいと考えています。繰り返しますが、パーティションを安全に変更し、マッピング関数から返すにはどうすればよいでしょうか?
マッピング関数によって受信されたパーティションは Pandas データフレーム (元のデータのコピーですか?) ですが、データをインプレースで変更しているときにクラッシュが発生します (ただし、例外/エラー メッセージは表示されません)。の呼び出しpartition.copy(deep=False)
にも同じことが言えますが、機能しません。パーティションをディープ コピーしてから、その場で変更する必要がありますか? または、新しい/マップされた列データと元の/変更されていないシリーズ/列から常に新しいデータフレームを構築する必要がありますか?
docker - Docker swarm ノードが swarm 内の別のホストからのサービスを検出できない
私の目標は、3 台の Linux (ubuntu) 物理ワークステーションのグループに docker swarm をセットアップし、その上でdaskクラスターを実行することです。
docker swarm を初期化し、すべてのマシンを swarm に追加できます。
docker stack deploy -c docker-compose.yml dask-cluster
次に、リーダー ボックスを実行します。
ここにあるdocker-compose.yml
:
そしてここにありますrichardbrks/dask-cluster
:
スウォームを展開するとdworker
、同じマシン上にないノードは何がdscheduler
何でdscheduler
あるかを認識しません。これらのノードの 1 つに SSH で接続し、env を調べましたdscheduler
が、そこにはありませんでした。また、ping を実行しようとしたdscheduler
ところ、「ping: unknown host」が返されました。
docker は、サービス検出に基づいて内部 dns を提供することになっているので、呼び出すとノードdscheduler
のアドレスに移動できると思いました。dschedler
コンピューターに設定されていないセットアップはありますか? または、私のファイルに何かが欠けていますか?
このコードはすべてhttps://github.com/MentalMasochist/dask-swarmにもあります