In welcher Situation kann ich Dask anstelle von Apache Spark verwenden? [geschlossen]

80

Ich verwende derzeit Pandas und Spark für die Datenanalyse. Ich fand, dass Dask parallelisiertes NumPy-Array und Pandas DataFrame bereitstellt.

Pandas ist einfach und intuitiv für die Datenanalyse in Python. Aufgrund des begrenzten Systemspeichers habe ich jedoch Schwierigkeiten, mit mehreren größeren Datenrahmen in Pandas umzugehen.

Einfache Antwort:

Apache Spark ist ein All-Inclusive-Framework, das verteiltes Computing, SQL-Abfragen, maschinelles Lernen und mehr kombiniert und auf der JVM ausgeführt wird und üblicherweise zusammen mit anderen Big Data-Frameworks wie Hadoop bereitgestellt wird. ... Im Allgemeinen ist Dask kleiner und leichter als Spark.

Ich erfahre unten Details von http://dask.pydata.org/en/latest/spark.html

  • Dask ist leicht
  • Dask wird normalerweise auf einem einzelnen Computer verwendet, läuft aber auch auf einem verteilten Cluster gut.
  • Dask bietet parallele Arrays, Datenrahmen, maschinelles Lernen und benutzerdefinierte Algorithmen
  • Dask hat einen Vorteil für Python-Benutzer, da es sich selbst um eine Python-Bibliothek handelt, sodass die Serialisierung und das Debuggen im Fehlerfall reibungsloser ablaufen.
  • Dask gibt das Verständnis auf hoher Ebene auf, damit Benutzer komplexere parallele Algorithmen ausdrücken können.
  • Dask ist leichter und lässt sich leichter in vorhandenen Code und Hardware integrieren.
  • Wenn Sie ein einzelnes Projekt suchen, das alles kann und bereits Big Data-Hardware verwendet, ist Spark eine sichere Wahl
  • Spark wird normalerweise in kleinen bis mittelgroßen Clustern verwendet, läuft aber auch auf einem einzelnen Computer.

Ich verstehe mehr über Dask unter dem folgenden Link https://www.continuum.io/blog/developer-blog/high-performance-hadoop-anaconda-and-dask-your-cluster

  • Wenn bei der Verwendung von Pandas, NumPy oder anderen Berechnungen mit Python auf einem einzelnen Computer Speicherprobleme, Speicherbeschränkungen oder CPU-Grenzen auftreten, kann Dask Ihnen helfen, alle Kerne auf einem einzelnen Computer zu skalieren oder zu skalieren auf allen Kernen und im Speicher Ihres Clusters.
  • Dask funktioniert gut auf einem einzigen Computer, um alle Kerne Ihres Laptops zu nutzen und Daten zu verarbeiten, die größer als der Speicher sind
  • Skaliert elastisch und elastisch auf Clustern mit Hunderten von Knoten.
  • Dask arbeitet nativ von Python aus mit Daten in verschiedenen Formaten und Speichersystemen, einschließlich des Hadoop Distributed File System (HDFS) und Amazon S3. Anaconda und Dask können mit Ihrer vorhandenen Hadoop-Unternehmensdistribution zusammenarbeiten, einschließlich Cloudera CDH und Hortonworks HDP.

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

Einschränkungen

Dask.DataFrame implementiert nicht die gesamte Pandas-Schnittstelle. Benutzer, die dies erwarten, werden enttäuscht sein. Dask.dataframe weist insbesondere die folgenden Einschränkungen auf:

  1. Das Festlegen eines neuen Index aus einer unsortierten Spalte ist teuer
  2. Bei vielen Vorgängen, wie z. B. Groupby-Apply und Join für unsortierte Spalten, muss der Index festgelegt werden, was, wie oben erwähnt, teuer ist
  3. Die Pandas-API ist sehr groß. Dask.dataframe versucht nicht, viele Pandas-Funktionen oder eine der exotischeren Datenstrukturen wie NDFrames zu implementieren

Vielen Dank an die Dask-Entwickler. Es scheint eine sehr vielversprechende Technologie zu sein.

Insgesamt kann ich verstehen, dass Dask einfacher zu bedienen ist als Funken. Dask ist so flexibel wie Pandas und hat mehr Möglichkeiten, parallel mit mehr CPUs zu rechnen.

Ich verstehe alle oben genannten Fakten über Dask.

Wie viel Datenmenge (in Terabyte) kann ungefähr mit Dask verarbeitet werden?

Hariprasad
quelle
Diese Frage ist sehr weit
gefasst
1
Die Berücksichtigung der Datengröße allein reicht nicht aus, um die besten parallelen Tools / Strategien auszuwählen. Wie der Algorithmus mit Daten umgeht, muss berücksichtigt werden. Ich habe nicht beide ausprobiert, werde aber wahrscheinlich dask auf einem einzelnen Computer wie Laptop oder PC ausprobieren. Und wird eine Bereitstellung in Betracht ziehen, um Funken zu erzeugen, wenn ein Cluster mit mehreren Knoten ausgeführt werden muss. Da es sehr kompliziert aussieht, jede Komponente mit dem mit Funken verbundenen Framework zu lernen und abzustimmen.
ReneWang
Sie können eine Antwort hier finden: medium.com/datadriveninvestor/…
Tom

Antworten:

40

Vielleicht möchten Sie den Dask-Vergleich mit Apache Spark lesen

Apache Spark ist ein All-Inclusive-Framework, das verteiltes Computing, SQL-Abfragen, maschinelles Lernen und mehr kombiniert und auf der JVM ausgeführt wird und üblicherweise zusammen mit anderen Big Data-Frameworks wie Hadoop bereitgestellt wird. Es wurde ursprünglich für die Erfassung und Abfrage von Massendaten optimiert, die in der Datenentwicklung und in der Geschäftsanalyse üblich sind, wurde jedoch seitdem erweitert. Spark wird normalerweise in kleinen bis mittelgroßen Clustern verwendet, läuft aber auch auf einem einzelnen Computer.

Dask ist eine parallele Programmierbibliothek, die mit dem Numeric Python-Ökosystem kombiniert wird, um parallele Arrays, Datenrahmen, maschinelles Lernen und benutzerdefinierte Algorithmen bereitzustellen. Es basiert auf Python und dem grundlegenden C / Fortran-Stack. Dask wurde ursprünglich entwickelt, um andere Bibliotheken durch Parallelität zu ergänzen, insbesondere für numerisches Rechnen und erweiterte Analyse, wurde jedoch seitdem erweitert. Dask wird normalerweise auf einem einzelnen Computer verwendet, läuft aber auch auf einem verteilten Cluster gut.

Im Allgemeinen ist Dask kleiner und leichter als Spark. Dies bedeutet, dass es weniger Funktionen hat und stattdessen in Verbindung mit anderen Bibliotheken verwendet werden soll, insbesondere mit denen im numerischen Python-Ökosystem.

MaxU
quelle