daskを使用して、結果をリレーショナルデータベースに保存する5000個のバッチタスクを処理したい場合は、すべて完了した後、 databseを照会し、(AWS S3に保存されます)結果ファイルを生成しますDASK - 実行中にワーカーを停止すると、完了したタスクが2回起動されます。
だから、多かれ少なかれ、このようなものだ:
from dask import bag, delayed batches = bag.from_sequence(my_batches()) results = batches.map(process_batch_and_store_results_in_database) graph = delayed(read_database_and_store_bundled_result_into_s3)(results) client = Client('the_scheduler:8786') client.compute(graph)
そして、これは動作しますが、:処理の終わり近く多くの作業者がアイドル状態にあり、AWS EC2をオフにすることができます(AWS EC2でお金を節約できます)。しかし、スケジューラは、それらのタスクがすでに完了していることを「忘れて」残りの作業者に対してそれらのタスクを再度実行しようとします。
read_database_and_store_bundled_result_into_s3
を開始する前にDaskがすべての結果を追跡しようとしているので、これは実際には機能であり、バグではないことを理解していますが、分散処理グラフをオーケストレーションするようdaskに指示する方法はありますか国家管理について心配しないでください。
この問題は、何らかの形でこれに関連すると思われる:https://github.com/dask/distributed/issues/847も関連 –
:http://stackoverflow.com/questions/41965253/repeated-task-execution -used-the-distributed-dask-scheduler/41965766#41965766 –