7

メモリより大きいデータセットの問題を解決しています。元のデータセットは .csv ファイルです。列の 1 つは、musicbrainz サービスからのトラック ID 用です。

私がすでにしたこと

.csv ファイルをdaskで読み取り、パフォーマンスを向上させるためにディスク上でcastra形式に変換しました。また、musicbrainz API にクエリを実行し、 peewee を使用して sqlite DB にいくつかの関連する結果を入力しました。プロセスに数日かかり、障害が発生した場合にデータを失いたくなかったため、別の dask.dataframe の代わりに DB を使用することにしました。

私はまだデータを実際に分析し始めていませんでした。データの再配置中になんとか十分な混乱を引き起こしました。

現在の問題

SQL DB から dask / castra データフレームに列を結合するのに苦労しています。実際、これが実行可能かどうかはわかりません。

代替アプローチ

タスクに最適なツールを選択する際にいくつかの間違いを犯したようです. カストラはおそらく十分に成熟しておらず、それが問題の一部だと思います. さらに、pandas と peewee's not で使用されているため、peewee を優先して SQLAlchemy を選択する方が良い場合があります。

Blaze + HDF5 は、dask + castra の優れた代替手段として機能する可能性があります。これは主に、HDF5 が castra よりも安定性/成熟度/完全性が高く、blaze がデータ ストレージに関する意見が少ないためです。たとえば、SQL DB のメイン データセットへの結合を簡素化できます。

一方、私は pandas に精通しており、dask は「同じ」API を公開しています。dasを使用すると、並列処理も得られます。

TL;DR

メインのデータセットに参加する必要がある、メモリ データセット + sqlite DB よりも大きなデータセットがあります。dask + castra (dask.dataframe に関連する他のデータ ストアがわからない) を使用し、SQLAlchemy を使用して SQL DB の一部を一度に pandas のデータフレームにロードするかどうかは疑問です。私が考える最良の代替案は、代わりにブレイズ + HDF5 に切り替えることです。この場合、あなたは何を提案しますか?

その他のオプション/意見は大歓迎です。これがSOにとって十分に具体的であることを願っています。

4

1 に答える 1

1

あなたは次の点で正しいです:

  • カストラは実験的で未熟です。

より成熟したものが必要な場合は、HDF5 または CSV を検討できます (パフォーマンスが遅くても問題ない場合)。Dask.dataframe は、pandas と同じように、これらすべての形式をサポートしています。

  • dask.dataframe と SQL のような 2 つの異なる形式を結合する方法は明確ではありません。

おそらく、どちらか一方を使用したいでしょう。SQL データを dask.dataframe に読み込むことに関心がある場合は、問題が発生する可能性があります。これは、一般的な状況で追加するのは難しくありません。

于 2015-10-14T16:25:23.253 に答える