97 votes

Dans quelle situation puis-je utiliser Dask au lieu d'Apache Spark?

Je suis actuellement en train d'utiliser Pandas et Spark pour l'analyse de données. J'ai constaté que Dask permet d'obtenir des tableaux NumPy et des DataFrames Pandas parallélisés.

Pandas est facile et intuitif pour effectuer des analyses de données en Python. Mais je trouve difficile de manipuler de multiples dataframes plus grands dans Pandas en raison de la mémoire système limitée.

Réponse simple :

Apache Spark est un framework complet combinant le calcul distribué, les requêtes SQL, l'apprentissage automatique, et plus encore, qui s'exécute sur la JVM et est communément déployé avec d'autres frameworks Big Data comme Hadoop. ... En général, Dask est plus petit et plus léger que Spark.

J'ai trouvé les détails ci-dessous sur http://dask.pydata.org/en/latest/spark.html

  • Dask est léger
  • Dask est généralement utilisé sur une seule machine, mais fonctionne également bien sur un cluster distribué.
  • Dask fournit des tableaux parallèles, des dataframes, de l'apprentissage automatique et des algorithmes personnalisés
  • Dask présente un avantage pour les utilisateurs de Python car c'est une bibliothèque Python en soi, donc la sérialisation et le débogage lorsque les choses tournent mal se font de manière plus fluide.
  • Dask abandonne la compréhension au niveau élevé pour permettre aux utilisateurs d'exprimer des algorithmes parallèles plus complexes.
  • Dask est plus léger et plus facile à intégrer dans le code et le matériel existants.
  • Si vous souhaitez un seul projet qui fait tout et que vous êtes déjà sur du matériel Big Data, alors Spark est un choix sûr
  • Spark est généralement utilisé sur un cluster de petite à moyenne taille, mais fonctionne également bien sur une seule machine.

J'ai appris plus de choses sur Dask à partir du lien ci-dessous https://www.continuum.io/blog/developer-blog/high-performance-hadoop-anaconda-and-dask-your-cluster

  • Si vous rencontrez des problèmes de mémoire, des limitations de stockage ou des limites de CPU sur une seule machine lors de l'utilisation de Pandas, NumPy ou d'autres calculs avec Python, Dask peut vous aider à passer à l'échelle sur tous les cœurs d'une seule machine, ou à passer à l'échelle sur tous les cœurs et la mémoire de votre cluster.
  • Dask fonctionne bien sur une seule machine pour exploiter tous les cœurs de votre ordinateur portable et traiter des données plus grandes que la mémoire
  • évolue de manière résiliente et élastique sur des clusters avec des centaines de nœuds.
  • Dask fonctionne nativement à partir de Python avec des données dans différents formats et systèmes de stockage, y compris le système de fichiers distribué Hadoop (HDFS) et Amazon S3. Anaconda et Dask peuvent fonctionner avec votre distribution Hadoop d'entreprise existante, y compris Cloudera CDH et Hortonworks HDP.

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

Limitations

Dask.DataFrame n'implémente pas l'ensemble de l'interface Pandas. Les utilisateurs qui s'attendent à cela seront déçus. Notamment, dask.dataframe présente les limitations suivantes :

  1. Le réglage d'un nouvel index à partir d'une colonne non triée est coûteux
  2. De nombreuses opérations, comme groupby-apply et join sur des colonnes non triées, nécessitent le réglage de l'index, ce qui est coûteux
  3. L'API de Pandas est très vaste. Dask.dataframe n'essaie pas d'implémenter de nombreuses fonctionnalités pandas ou l'une des structures de données plus exotiques comme les NDFrames

Merci aux développeurs de Dask. Il semble s'agir d'une technologie très prometteuse.

En général, je peux comprendre que Dask est plus simple à utiliser que Spark. Dask est aussi flexible que Pandas mais avec plus de puissance pour calculer avec plusieurs processeurs en parallèle.

J'ai compris tous les faits ci-dessus sur Dask.

Alors, à peu près quelle quantité de données(en téraoctets) peut être traitée avec Dask?

1 votes

En considérant uniquement la taille des données n'est pas suffisant pour choisir les meilleurs outils/stratégies parallèles. Comment l'algorithme gère les données doit également être pris en compte. Je n'ai pas encore essayé les deux, mais je vais probablement essayer dask sur une seule machine comme un ordinateur portable ou un PC. Et je envisagerai de déployer sur spark lorsqu'il y a besoin d'exécuter avec un cluster multi-nœuds. Comme il semble très compliqué d'apprendre et de régler chaque composant avec le framework fourni avec spark.

0 votes

Vous pouvez trouver une réponse ici : medium.com/datadriveninvestor/…

50voto

MaxU Points 5284

Vous voudrez peut-être lire Comparaison de Dask à Apache Spark

Apache Spark est un framework tout-en-un combinant le calcul distribué, les requêtes SQL, l'apprentissage automatique, et plus encore, qui s'exécute sur la JVM et est couramment déployé avec d'autres frameworks Big Data comme Hadoop. Il a été initialement optimisé pour l'ingestion de données en vrac et les requêtes courantes en ingénierie des données et en analyse commerciale, mais s'est depuis élargi. Spark est généralement utilisé sur des clusters de petite à moyenne taille, mais fonctionne également bien sur une seule machine.

Dask est une bibliothèque de programmation parallèle qui se combine avec l'écosystème NumPy pour fournir des tableaux parallèles, des dataframes, de l'apprentissage automatique et des algorithmes personnalisés. Il est basé sur Python et la pile fondamentale C/Fortran. Dask a été initialement conçu pour compléter d'autres bibliothèques avec un parallélisme, en particulier pour le calcul numérique et l'analyse avancée, mais s'est depuis élargi. Dask est généralement utilisé sur une seule machine, mais fonctionne également bien sur un cluster distribué.

En général, Dask est plus petit et plus léger que Spark. Cela signifie qu'il a moins de fonctionnalités et est plutôt destiné à être utilisé en conjonction avec d'autres bibliothèques, en particulier celles de l'écosystème numérique de Python.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X