web-dev-qa-db-fra.com

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

J'utilise actuellement Pandas et Spark pour l'analyse des données. J'ai trouvé Dask qui fournit un tableau NumPy parallélisé et Pandas DataFrame.

Pandas est facile et intuitif pour analyser des données en Python. Mais je trouve difficile de gérer plusieurs plus grandes images dans Pandas en raison de la mémoire système limitée.

Réponse simple:

Apache Spark est un environnement global associant l’informatique distribuée, les requêtes SQL, l’apprentissage automatique et bien plus encore, qui s’exécute sur la machine virtuelle et est couramment co-déployé avec d’autres environnements Big Data comme Hadoop. En général, Dask est plus petit et plus léger que Spark.

Je connais les détails ci-dessous de http://dask.pydata.org/en/latest/spark.html

  • Dask est léger
  • Dask est généralement utilisé sur un seul ordinateur, mais fonctionne également correctement sur un cluster distribué.
  • Dask to fournit des tableaux parallèles, des cadres de données, un apprentissage automatique et des algorithmes personnalisés
  • Dask présente un avantage pour les utilisateurs Python, car il s'agit en soi d'une bibliothèque Python, de sorte que la sérialisation et le débogage en cas de problème se déroulent plus facilement.
  • Dask abandonne la compréhension de haut niveau pour permettre aux utilisateurs d'exprimer des algorithmes parallèles plus complexes.
  • Dask est plus léger et s'intègre plus facilement dans le code et le matériel existants.
  • Si vous voulez un seul projet qui fait tout et que vous êtes déjà sur du matériel Big Data, alors Spark est une valeur sûre.)
  • Spark est généralement utilisé sur des grappes de taille petite à moyenne, mais fonctionne également bien sur un seul ordinateur.

Je comprends 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 processeur sur un seul ordinateur lorsque vous utilisez Pandas, NumPy ou d'autres calculs avec Python, Dask peut vous aider à augmenter la taille de tous les cœurs sur un seul ordinateur. sur tous les cœurs et la mémoire de votre cluster.
  • Dask fonctionne bien sur une seule machine pour utiliser tous les cœurs de votre ordinateur portable et traiter des données plus volumineuses que la mémoire.
  • évolue de manière résiliente et élastique sur des grappes comportant des centaines de nœuds.
  • Dask fonctionne en mode natif à partir de Python avec des données dans différents formats et systèmes de stockage, y compris le système de fichiers distribués 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'intégralité de l'interface Pandas. Les utilisateurs s'attendent à ce que cela soit déçu. Notons que dask.dataframe présente les limitations suivantes:

  1. La définition d'un nouvel index à partir d'une colonne non triée coûte cher
  2. De nombreuses opérations, comme groupby-apply et join sur des colonnes non triées, nécessitent de définir l'index, ce qui, comme indiqué ci-dessus, est coûteux.
  3. L’API Pandas est très volumineux. Dask.dataframe n’essaie pas d’implémenter de nombreuses fonctionnalités pandas ni les structures de données plus exotiques comme les cadres NDFrames

Merci aux développeurs de Dask. Cela semble être une technologie très prometteuse.

Globalement, je peux comprendre que Dask est plus simple à utiliser que spark. Dask est aussi flexible que Pandas avec plus de puissance pour calculer avec plus de cpu en parallèle.

Je comprends tous les faits ci-dessus concernant Dask.

Donc, approximativement, quelle quantité de données (en téraoctets) peut être traitée avec Dask?

56
Hariprasad

vous voudrez peut-être lire comparaison de Dask avec Apache Spark

Apache Spark est un environnement global associant l'informatique distribuée, les requêtes SQL, l'apprentissage automatique, etc., qui s'exécute sur la machine virtuelle Java et est généralement co-déployé avec d'autres environnements Big Data tels que Hadoop. A l'origine, il était optimisé pour l'ingestion en masse de données et l'interrogation courantes dans l'ingénierie de données et l'analyse commerciale, mais s'est depuis étendu. Spark est généralement utilisé sur des grappes de taille petite à moyenne, mais fonctionne également bien sur un seul ordinateur.

Dask est une bibliothèque de programmation parallèle qui, associée à l'écosystème Numeric Python, fournit des tableaux parallèles, des bases de données, un apprentissage automatique et des algorithmes personnalisés. Il est basé sur Python et la pile de base C/Fortran. Dask a été conçu à l'origine pour compléter d'autres bibliothèques avec le parallélisme, en particulier pour l'informatique numérique et l'analyse avancée, mais s'est élargi depuis. Dask est généralement utilisé sur un seul ordinateur, mais fonctionne également correctement sur un cluster distribué.

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

24
MaxU