8

dask DataFrame に変換して castra に保存しようとしている json ファイルのディレクトリがあります。それらの間に O(10**7) json レコードを含む 200 個のファイルがあります。コードは非常に単純で、主にチュートリアルの例に従っています。

import dask.dataframe as dd
import dask.bag as db
import json
txt = db.from_filenames('part-*.json')
js = txt.map(json.loads)
df = js.to_dataframe()
cs=df.to_castra("data.castra")

32 コアのマシンで実行していますが、コードは 1 つのコアしか 100% 使用していません。ドキュメントからの私の理解は、このコードが並行して実行されるということです。なぜそうではないのですか?私は何かを誤解しましたか?

4

1 に答える 1

8

最終的なコレクションは、デフォルトでスレッドを使用する dask データフレームです。プロセスを使用するように dask に明示的に指示する必要があります。

これをグローバルに行うことができます

import dask
dask.config.set(scheduler='multiprocessing')

または、to_castra通話中にこれを行う

df.to_castra("data.castra", scheduler='multiprocessing')

また、警告として、Castra はほとんどが実験でした。それはかなり高速ですが、HDF5 や Parquet のように成熟しているとは言えません。

于 2016-02-19T23:04:10.023 に答える