どのような状況で、Apache Sparkの代わりにDaskを使用できますか?[閉まっている]


81

私は現在、データ分析にPandasとSparkを使用しています。Daskが並列化されたNumPy配列とPandasDataFrameを提供していることがわかりました。

Pandasは、Pythonでデータ分析を行うのに簡単で直感的です。しかし、システムメモリが限られているため、パンダで複数の大きなデータフレームを処理するのは困難です。

簡単な答え:

Apache Sparkは、分散コンピューティング、SQLクエリ、機械学習などを組み合わせた包括的なフレームワークであり、JVMで実行され、通常、Hadoopなどの他のビッグデータフレームワークと共同でデプロイされます。...一般的に、DaskはSparkよりも小型で軽量です。

http://dask.pydata.org/en/latest/spark.htmlから以下の詳細を知ることができます

  • Daskは軽量です
  • Daskは通常、単一のマシンで使用されますが、分散クラスターでも適切に実行されます。
  • Daskは、並列配列、データフレーム、機械学習、カスタムアルゴリズムを提供します
  • Daskはそれ自体がPythonライブラリであるため、Pythonユーザーにとって利点があります。そのため、問題が発生した場合のシリアル化とデバッグがよりスムーズに行われます。
  • Daskは、ユーザーがより複雑な並列アルゴリズムを表現できるように、高度な理解を放棄します。
  • Daskは軽量で、既存のコードやハードウェアに簡単に統合できます。
  • すべてを実行する単一のプロジェクトが必要で、すでにビッグデータハードウェアを使用している場合は、Sparkが安全です。
  • Sparkは通常、中小規模のクラスターで使用されますが、単一のマシンでも正常に動作します。

以下のリンクからDaskについて詳しく理解しています https://www.continuum.io/blog/developer-blog/high-performance-hadoop-anaconda-and-dask-your-cluster

  • Pandas、NumPy、またはPythonで他の計算を使用しているときに、単一のマシンでメモリの問題、ストレージの制限、またはCPUの境界に遭遇した場合、Daskは単一のマシンのすべてのコアでスケールアップまたはスケールアウトするのに役立ちますクラスタ全体のすべてのコアとメモリで。
  • Daskは、単一のマシンでうまく機能し、ラップトップのすべてのコアを利用して、メモリよりも大きいデータを処理します
  • 数百のノードを持つクラスターで弾力的かつ弾力的にスケールアップします。
  • Daskは、Hadoop分散ファイルシステム(HDFS)やAmazon S3など、さまざまな形式やストレージシステムのデータを使用してPythonからネイティブに動作します。AnacondaとDaskは、ClouderaCDHやHortonworksHDPなどの既存のエンタープライズHadoopディストリビューションと連携できます。

http://dask.pydata.org/en/latest/dataframe-overview.html

制限事項

Dask.DataFrameは、Pandasインターフェース全体を実装しているわけではありません。これを期待しているユーザーはがっかりするでしょう。特に、dask.dataframeには次の制限があります。

  1. ソートされていない列から新しいインデックスを設定するにはコストがかかります
  2. groupby-applyやソートされていない列での結合などの多くの操作では、インデックスを設定する必要がありますが、前述のようにコストがかかります
  3. PandasAPIは非常に大きいです。Dask.dataframeは、多くのパンダ機能やNDFrameのようなよりエキゾチックなデータ構造の実装を試みません。

Dask開発者に感謝します。非常に有望な技術のようです。

全体として、Daskはsparkよりも使いやすいことがわかります。DaskはPandasと同じくらい柔軟性があり、より多くのCPUの並列処理で計算する能力があります。

Daskに関する上記の事実をすべて理解しています。

では、Daskで処理できるデータの量(テラバイト単位)はおおよそどれくらいですか?


この質問は非常に広範です
MRocklin 2016

1
最適な並列ツール/戦略を選択するには、データサイズだけを考慮するだけでは不十分です。アルゴリズムがデータを処理する方法を考慮する必要があります。私は両方を試したことがありませんが、おそらくラップトップやPCなどの単一のマシンでdaskを試します。また、マルチノードクラスターで実行する必要がある場合は、スパークにデプロイすることを検討します。Sparkに付属するフレームワークを使用して各コンポーネントを学習および調整するのは非常に複雑に見えるためです。
ReneWang 2017年

あなたはここに回答を見つけることがあります。medium.com/datadriveninvestor/...
トム・

回答:


40

DaskとApacheSparkの比較を読むことをお勧めします

Apache Sparkは、分散コンピューティング、SQLクエリ、機械学習などを組み合わせた包括的なフレームワークであり、JVMで実行され、通常、Hadoopなどの他のビッグデータフレームワークと共同でデプロイされます。もともとは、データエンジニアリングやビジネス分析で一般的な大量のデータの取り込みとクエリ用に最適化されていましたが、その後拡大しました。Sparkは通常、中小規模のクラスターで使用されますが、単一のマシンでも正常に動作します。

Daskは、Numeric Pythonエコシステムと組み合わせて、並列配列、データフレーム、機械学習、カスタムアルゴリズムを提供する並列プログラミングライブラリです。これは、Pythonと基本的なC / Fortranスタックに基づいています。Daskは元々、特に数値コンピューティングと高度な分析のために、並列処理で他のライブラリを補完するように設計されていましたが、その後拡大しました。Daskは通常、単一のマシンで使用されますが、分散クラスターでも適切に実行されます。

一般的に、DaskはSparkよりも小型で軽量です。これは、機能が少なく、代わりに他のライブラリ、特に数値Pythonエコシステムのライブラリと組み合わせて使用​​することを目的としていることを意味します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.