web-dev-qa-db-ja.com

どのような状況でApache Sparkの代わりにDaskを使用できますか?

現在、データ分析に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は、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、またはその他の計算を使用しているときに、単一のマシンでメモリの問題、ストレージの制限、またはCPUの境界に直面している場合、Daskは単一のマシン上のすべてのコアのスケールアップ、またはスケールアウトに役立ちますクラスター全体のすべてのコアとメモリ上。
  • Daskは1台のマシンでうまく動作し、ラップトップのすべてのコアを使用して、メモリよりも大きなデータを処理します。
  • 数百のノードを持つクラスター上で、弾力的かつ弾力的に拡張します。
  • Daskは、PythonからHadoop Distributed File System(HDFS)やAmazon S3を含むさまざまなフォーマットおよびストレージシステムのデータで動作します。AnacondaとDaskは、Clouderaを含む既存のエンタープライズHadoopディストリビューションで動作しますCDHおよびHortonworks HDP。

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

制限事項

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

  1. ソートされていない列から新しいインデックスを設定するのは高価です
  2. Groupby-applyや並べ替えられていない列の結合などの多くの操作では、インデックスの設定が必要です。これは、前述のように高価です
  3. Pandas APIは非常に大きい。Dask.dataframeは、多くのpandas機能またはNDFramesなどのよりエキゾチックなデータ構造の実装を試みません。

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

全体として、Daskはsparkよりも使いやすいと理解できます。 DaskはPandasと同じくらい柔軟性があり、より多くのCPUの並列性を備えた計算能力を備えています。

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

では、だいたいどれくらいの量のデータ(テラバイト単位)がDaskで処理できますか?

56
Hariprasad

読みたくなるかもしれません Apache Sparkとの比較

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

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

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

24
MaxU