現在、データ分析に Pandas と Spark を使用しています。Dask が並列化された NumPy 配列と Pandas DataFrame を提供していることがわかりました。
Pandas は、Python でデータ分析を行うための簡単で直感的なツールです。しかし、システムメモリが限られているため、Pandas で複数の大きなデータフレームを処理するのは困難です。
簡単な答え:
Apache Spark は、分散コンピューティング、SQL クエリ、機械学習などを組み合わせた包括的なフレームワークであり、JVM 上で実行され、Hadoop などの他のビッグ データ フレームワークと一緒にデプロイされるのが一般的です。... 一般的に Dask は Spark よりも小型で軽量です。
http://dask.pydata.org/en/latest/spark.htmlから以下の詳細を知ることができます
- Daskは軽量です
- Dask は通常、単一のマシンで使用されますが、分散クラスターでも適切に動作します。
- Dask to は、並列配列、データフレーム、機械学習、およびカスタム アルゴリズムを提供します。
- Daskはそれ自体がPythonライブラリであるため、Pythonユーザーにとって利点があり、問題が発生した場合のシリアル化とデバッグがよりスムーズに行われます.
- Dask は、ユーザーがより複雑な並列アルゴリズムを表現できるように、高度な理解を放棄します。
- Dask は軽量で、既存のコードやハードウェアに簡単に統合できます。
- すべてを行う単一のプロジェクトが必要で、すでにビッグデータ ハードウェアを使用している場合は、Spark が安全な選択です
- Spark は通常、小規模から中規模のクラスターで使用されますが、単一のマシンでも適切に動作します。
以下のリンクから Dask についてより多くのことを理解しています https://www.continuum.io/blog/developer-blog/high-performance-hadoop-anaconda-and-dask-your-cluster
- Python で Pandas、NumPy、またはその他の計算を使用しているときに、1 台のマシンでメモリの問題、ストレージの制限、または CPU の境界が発生している場合、Dask は 1 台のマシンのすべてのコアでスケールアップまたはスケールアウトするのに役立ちます。クラスタ全体のすべてのコアとメモリで。
- Dask は単一のマシンでうまく機能し、ラップトップのすべてのコアを利用して、メモリよりも大きなデータを処理します
- 数百のノードを持つクラスターで、回復力と弾力性を持ってスケールアップします。
- Dask は、Hadoop Distributed File System (HDFS) や Amazon S3 など、さまざまな形式やストレージ システムのデータを Python からネイティブに処理します。Anaconda と Dask は、Cloudera CDH や Hortonworks HDP など、既存のエンタープライズ Hadoop ディストリビューションと連携できます。
http://dask.pydata.org/en/latest/dataframe-overview.html
制限事項
Dask.DataFrame は Pandas インターフェイス全体を実装していません。これを期待しているユーザーはがっかりするでしょう。特に、dask.dataframe には次の制限があります。
- ソートされていない列から新しいインデックスを設定するとコストがかかります
- groupby-apply や並べ替えられていない列の結合などの多くの操作では、インデックスを設定する必要があり、前述のようにコストがかかります。
- Pandas API は非常に大きいです。Dask.dataframe は、多くの pandas 機能や NDFrame などのより風変わりなデータ構造を実装しようとはしません。
Dask 開発者に感謝します。とても有望な技術のようです。
全体として、Dask は Spark よりも使いやすいことがわかります。Dask は Pandas と同じくらい柔軟で、より多くの CPU で並列に計算する能力が高くなります。
Dask に関する上記の事実をすべて理解しています。
では、Dask で処理できるデータ量 (テラバイト単位) はおよそどれくらいでしょうか?