Ist Python für Big Data geeignet?

13

Ich habe in diesem Beitrag gelesen: Ist die R-Sprache für Big Data geeignet, die Big Data ausmacht 5TB, und obwohl sie gute Informationen über die Machbarkeit der Arbeit mit dieser Art von Daten Rliefert, enthält sie nur sehr wenige Informationen über Python. Ich habe mich gefragt, ob ich Pythonmit so vielen Daten auch arbeiten kann.

tobender Faultier
quelle

Antworten:

16

Zur Verdeutlichung: Ich bin der Meinung, dass die ursprünglichen Fragenverweise von OP für ein SO-Format wahrscheinlich nicht am besten geeignet sind, aber ich werde sie auf jeden pythonFall in diesem speziellen Fall vertreten.

Lassen Sie mich zunächst sagen, dass unabhängig von Ihrer Datengröße dies pythonnicht Ihr einschränkender Faktor sein sollte. Tatsächlich gibt es nur ein paar Hauptprobleme, mit denen Sie im Umgang mit großen Datenmengen konfrontiert werden:

  • Daten in den Speicher einlesen - Dies ist bei weitem das häufigste Problem in der Welt von Big Data. Grundsätzlich können Sie nicht mehr Daten einlesen, als Sie über Arbeitsspeicher (RAM) verfügen. Der beste Weg, dies zu beheben, besteht darin, atomare Operationen an Ihren Daten durchzuführen, anstatt zu versuchen, alles auf einmal einzulesen.
  • Speichern von Daten - Dies ist eigentlich nur eine andere Form der früheren Ausgabe. Wenn1TB Sie etwa auf den neuesten Stand gebracht haben , müssen Sie sich irgendwo anders nach Speicher umsehen. AWS S3 ist die häufigste Ressource und pythonverfügt über die fantastischeboto Bibliothek, die das Führen mit großen Datenmengen erleichtert.
  • Netzwerklatenz - Das Verschieben von Daten zwischen verschiedenen Diensten wird Ihr Engpass sein. Es gibt keine große Menge, die Sie tun können, um dieses Problem zu beheben, außer zu versuchen, lokalisierte Ressourcen auszuwählen und sich an die Wand anzuschließen.
indico
quelle
13

Es gibt einige Dinge, die Sie beim Umgang mit Big Data verstehen müssen -

Was ist Big Data?

Möglicherweise kennen Sie die bekannten Vs von Big Data - Lautstärke, Geschwindigkeit, Vielfalt ... Python ist also möglicherweise nicht für alle geeignet. Und das mit allen verfügbaren Data-Science-Tools. Sie müssen wissen, welches Tool für welchen Zweck geeignet ist.

Bei großem Datenvolumen:

  • Schwein / Bienenstock / Hai - Datenbereinigung und ETL-Arbeit
  • Hadoop / Spark - Verteiltes Parallel-Computing
  • Mahout / ML-Lib - Maschinelles Lernen

Jetzt können Sie R / Python in Zwischenphasen verwenden, aber Sie werden feststellen, dass sie zu einem Engpass in Ihrem gesamten Prozess werden.

Wenn es um die Geschwindigkeit von Daten geht:

  • Kafka / Storm - Hochdurchsatzsystem

Die Leute versuchen hier, R / Python zu verwenden, aber es hängt wiederum von der gewünschten Parallelität und der Komplexität Ihres Modells ab.

Welche Art von Analyse möchten Sie durchführen?

Wenn Ihr Modell verlangt, dass die gesamten Daten zuerst in den Speicher geladen werden, sollte Ihr Modell nicht komplex sein. Wenn die Zwischendaten groß sind, wird der Code beschädigt. Und wenn Sie daran denken, es auf die Festplatte zu schreiben, werden Sie mit einer zusätzlichen Verzögerung konfrontiert, da das Lesen / Schreiben auf der Festplatte im Vergleich zum RAM langsam ist.

Fazit

Sie können Python auf jeden Fall im Big-Data-Bereich verwenden (auf jeden Fall, da Leute mit R arbeiten, warum nicht mit Python), kennen aber Ihre Daten und Geschäftsanforderungen zuerst. Es gibt möglicherweise bessere Tools für diese und denken Sie immer daran:

Ihre Tools sollten nicht bestimmen, wie Sie Fragen beantworten. Ihre Fragen sollten bestimmen, welche Tools Sie verwenden.

Ankit
quelle
8

Python bietet einige sehr gute Tools für die Arbeit mit Big Data:

taub

Mit den memorymappierten Arrays von Numpy können Sie auf eine auf der Festplatte gespeicherte Datei zugreifen, als wäre es ein Array. Nur die Teile des Arrays, mit denen Sie aktiv arbeiten, müssen in den Speicher geladen werden. Es kann fast genauso wie ein gewöhnliches Array verwendet werden.

h5py und pytables

Diese beiden Bibliotheken bieten Zugriff auf HDF5-Dateien. Diese Dateien ermöglichen den Zugriff auf nur einen Teil der Daten. Dank der zugrunde liegenden Bibliotheken, die für den Zugriff auf die Daten verwendet werden, können viele mathematische Operationen und andere Manipulationen der Daten durchgeführt werden, ohne sie in eine Python-Datenstruktur zu laden. Massive, stark strukturierte Dateien sind möglich, viel größer als 5 TB. Es ermöglicht auch eine nahtlose, verlustfreie Komprimierung.

Datenbanken

Es gibt verschiedene Arten von Datenbanken, mit denen Sie große Datenmengen speichern und nur die Teile laden können, die Sie benötigen. In vielen Datenbanken können Sie Änderungen vornehmen, ohne die Daten in eine Python-Datenstruktur zu laden.

Pandas

Dies ermöglicht einen übergeordneten Zugriff auf verschiedene Datentypen, einschließlich HDF5-Daten, CSV-Dateien, Datenbanken und sogar Websites. Für Big Data werden Wrapper für den HDF5-Dateizugriff bereitgestellt, die die Analyse von Big Data-Sets erleichtern.

mpi4py

Dies ist ein Tool, mit dem Sie Ihren Python-Code auf mehrere Prozessoren oder sogar mehrere Computer verteilt ausführen können. Auf diese Weise können Sie Teile Ihrer Daten gleichzeitig bearbeiten.

dask

Es stellt eine Version des normalen Numpy-Arrays bereit, die viele der normalen Numpy-Operationen auf Mehrkern-Weise unterstützt und Daten verarbeitet, die zu groß sind, um in den Speicher zu passen.

lodern

Ein Tool, das speziell für Big Data entwickelt wurde. Grundsätzlich handelt es sich um einen Wrapper um die oben genannten Bibliotheken, der konsistente Schnittstellen zu einer Vielzahl verschiedener Methoden zum Speichern großer Datenmengen (z. B. HDF5 oder Datenbanken) und Tools bietet, mit denen sich Daten, die bearbeitet, rechnerisch bearbeitet und analysiert werden können ist zu groß, um in den Speicher zu passen.

Die schwarze Katze
quelle
4

Absolut. Wenn Sie mit Daten in dieser Größenordnung arbeiten, ist es üblich, ein Big-Data-Framework zu verwenden. In diesem Fall ist Python oder die von Ihnen verwendete Sprache lediglich eine Schnittstelle. Siehe zum Beispiel Spark's Python Programming Guide . Welche Art von Daten haben Sie und was möchten Sie damit machen?

Emre
quelle
3

Um mit einer solchen Datenmenge umzugehen, ist die Programmiersprache nicht das Hauptanliegen, sondern das Programmiergerüst. Frameworks wie MapReduce oder Spark sind an viele Sprachen gebunden, einschließlich Python. Diese Frameworks haben sicherlich viele einsatzbereite Pakete für Datenanalyse-Aufgaben. Aber am Ende kommt es auf Ihre Anforderungen an, dh was ist Ihre Aufgabe? Menschen haben unterschiedliche Definitionen von Datenanalyse-Aufgaben, einige von ihnen können leicht mit relationalen Datenbanken gelöst werden. In diesem Fall ist SQL viel besser als alle anderen Alternativen.

Lgylym
quelle
2

Ich glaube, dass die Sprache selbst wenig mit den Leistungsfähigkeiten zu tun hat, wenn es um große Datenmengen geht. Was zählt, ist:

  • Wie groß sind die Daten tatsächlich?
  • Welche Verarbeitung werden Sie darauf durchführen
  • Welche Hardware werden Sie verwenden?
  • Welches sind die spezifischen Bibliotheken, die Sie verwenden möchten?

Wie auch immer, Python ist in datenwissenschaftlichen Communities gut eingeführt.

Mateva
quelle
2

Ich habe Anaconda Python 3.4 und Pandas verwendet, um eine 10-MB-Zeilendatenbank zu durchsuchen, die 20 KB Anmeldeinformationen entspricht. Dauert ungefähr eine Minute. Die Pandas-Interna nutzen das Gedächtnis sehr gut. Wirklich große Datenmengen erfordern jedoch eine auf das Problem abgestimmte Verarbeitungsarchitektur. Pandas ist nur der Klebstoff (die Logik) in dieser Gleichung, und andere Werkzeuge können dies ebenfalls tun. R, Scala, Haskell, SAS usw. können einen Teil der Logik nachbilden - vielleicht gerade genug, um Fragen schneller zu beantworten. Aber Python ist ein gutes (bestes?) Allzweckwerkzeug. Sie können R-Code in Python sowie in den meisten anderen Sprachen ausführen. Obwohl interpretierend, gibt es Hochleistungstechniken und -werkzeuge wie pypy, mit denen Python mit nur geringfügig mehr Aufwand fast so schnell wie Benchmark-Werkzeuge ausgeführt werden kann. Und Python hat viele Bibliotheken, die so gut wie alles tun - siehe obige Liste.

Wenn Sie sich fragen, ob Sie Python lernen und verwenden sollen, ist meine Antwort "Ja". Nur wenige datenwissenschaftliche Probleme werden mit einem einzigen Tool gelöst. Es kann Ihr Werkzeug werden, aber es ist nur das - ein Werkzeug. Und so wie kein gesunder Mensch ein Haus mit nur einem Hammer baut, benutzt kein gesunder Data Scientist nur ein Werkzeug.

Harvey
quelle
0

Es ist lustig, wie Menschen Big Data mit Data Science und Business Intelligence mischen.

Erstens bedeutet Big Data "viele Daten", so viele Informationen, dass sie nicht in eine herkömmliche Datenbank passen. Manchmal sind Big Data jedoch nicht einmal richtige "Wert" -Informationen, sondern Dokumente, Bilder und so weiter.

Um Big Data zu verarbeiten, MÜSSEN WIR GESCHWINDIGKEITEN. Python ist nicht in der Liga, also R. Wenn es jedoch so einfach ist, eine CSV zu erstellen und in eine Datenbank einzufügen, dann ist es ETL. Dafür ist keine Programmierung erforderlich.

Und wenn die Informationen reduziert sind, können wir Python, R oder was auch immer Sie wollen anwenden. Sogar Excel. In dieser Phase sind Big Data jedoch keine Big Data mehr, sondern konventionelle Daten.

Meiner Meinung nach eignet sich Java besser für Big Data (für die gesamte Kette), aber aus unpraktischen Gründen wird Python standardmäßig verwendet.

Magallane
quelle