私は、ハイブフォーマットとスナッピー圧縮のパーケットファイルを用意しています。それはメモリに収まり、pandas.infoは以下のデータを提供します。分散型ファーストディスパッチの処理時間が一貫していません
寄木細工のファイルのグループごとの行数が今
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
Index: 21547746 entries, YyO+tlZtAXYXoZhNr3Vg3+dfVQvrBVGO8j1mfqe4ZHc= to oE4y2wK5E7OR8zyrCHeW02uTeI6wTwT4QTApEVBNEdM=
Data columns (total 8 columns):
payment_method_id int16
payment_plan_days int16
plan_list_price int16
actual_amount_paid int16
is_auto_renew bool
transaction_date datetime64[ns]
membership_expire_date datetime64[ns]
is_cancel bool
dtypes: bool(2), datetime64[ns](2), int16(4)
memory usage: 698.7+ MB
ちょうど100K
で、DASKでいくつかの簡単な計算をする私は、分散を使用して>>>time.asctime();ddf.actual_amount_paid.mean().compute();time.asctime()
'Fri Oct 13 23:44:50 2017'
141.98732048354384
'Fri Oct 13 23:44:59 2017'
スレッディング使用して、次のタイミング
を取得(ローカルクラスタ)
>>> c=Client()
>>> time.asctime();ddf.actual_amount_paid.mean().compute();time.asctime()
'Fri Oct 13 23:47:04 2017'
141.98732048354384
'Fri Oct 13 23:47:15 2017'
>>>
それはそれぞれ約9秒でOKでした。今、マルチプロセッシングを使用して
が、ここでは驚きが付属しています...
>>> time.asctime();ddf.actual_amount_paid.mean().compute(get=dask.multiprocessing.get);time.asctime()
'Fri Oct 13 23:50:43 2017'
141.98732048354384
'Fri Oct 13 23:57:49 2017'
>>>
私は、マルチプロセッシングと分散/ローカルクラスタは、スレッドと、おそらくいくつかの相違点と同じオーダーであることを期待する(良いか悪いかについて)
しかし、マルチプロセッシングでは、in16列全体で単純な平均をとるのに47倍も時間がかかりますか?
私のenvは、必要なモジュールをインストールしたばかりの新しいコンドミニアムです。何も手作りではありません。
なぜこの違いがありますか?私はdask/distributedを管理して、問題の性質に応じて異なるスケジューラーの間で賢明に選択できるように、予測可能な振る舞いを持つことはできません。
これは単なるおもちゃの例ですが、私は私の期待に合った例を得ることができませんでした。
私の心の後ろに守っておくべきことがありますか?または私はちょうどポイントを完全に逃していますか?この場合のデータのすべて - - ねじ切りスケジューラで
おかげ
JC
はい、私は実際に同じ結論に達したいくつかのレスリングとマニュアルの再読み込みの後に。たくさんの学習;-) –