Frage

Ich habe in diesem Beitrag gelesen Ist die R -Sprache für Big Data geeignet Dass Big Data bildet 5TB, und während es gute Arbeit liefert, Informationen über die Machbarkeit der Arbeit mit dieser Art von Daten in zu liefern R Es liefert nur sehr wenig Informationen darüber Python. Ich habe mich gefragt, ob Python kann auch mit so vielen Daten funktionieren.

War es hilfreich?

Lösung

Um zu verdeutlichen, fühle ich mich, als ob die ursprünglichen Frage-Referenzen von OP wahrscheinlich nicht für ein SO-Typ-Format am besten sind, aber ich werde sicherlich darstellen python In diesem speziellen Fall.

Lassen Sie mich einfach damit beginnen, dies unabhängig von Ihrer Datengröße zu sagen, python Sollte nicht Ihr begrenzender Faktor sein. Tatsächlich gibt es nur ein paar Hauptprobleme, die Sie mit großen Datensätzen begegnen werden:

  • Daten in den Speicher lesen - Dies ist bei weitem das häufigste Problem in der Welt der Big Data. Grundsätzlich können Sie nicht mehr Daten lesen als Speicher (RAM) für. Der beste Weg, dies zu beheben, besteht darin, Atomoperationen auf Ihren Daten zu betreiben, anstatt zu versuchen, alles auf einmal zu lesen.
  • Daten speichern - Dies ist eigentlich nur eine andere Form der früheren Ausgabe, bis Sie sich darauf ersetzen können 1TB, Sie müssen sich woanders nach der Aufbewahrung suchen. AWS S3 ist die häufigste Ressource und python hat das Fantastische boto Bibliothek, um die Führung mit großen Daten zu erleichtern.
  • Netzwerk-Latenz - Das Verschieben von Daten zwischen verschiedenen Diensten ist Ihr Engpass. Es gibt keine große Menge, die Sie tun können, um dies zu beheben, außer dass Sie versuchen, gemeinsame Ressourcen auszuwählen und sich in die Wand zu stecken.

Andere Tipps

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

Was ist Big Data?

Sie sind sich der berühmten V von Big Data bewusst - Volumen, Geschwindigkeit, Abwechslung ... also ist Python möglicherweise nicht für alle geeignet. Und es geht mit allen verfügbaren Datenwissenschaftstools. Sie müssen wissen, welches Tool für welchen Zweck gut ist.

Wenn Sie sich mit einem großen Datenvolumen befassen:

  • Schwein/Hive/Hai - Datenreinigung und ETL -Arbeit
  • Hadoop/Spark - Verteiltes paralleles Computing
  • Mahout/ml -lib - maschinelles Lernen

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

Wenn Sie sich mit Datengeschwindigkeit befassen:

  • Kafka/Storm - High -Durchsatz -System

Die Leute versuchen hier, R/Python zu sein, aber es hängt auch davon ab, dass Sie eine Art Parallelität und Ihre Modellkomplexität haben.

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

Wenn Ihr Modell die gesamten Daten erfordert, die zuerst in den Speicher gebracht werden, sollte Ihr Modell nicht komplex sein, da der Code, wenn die Zwischendaten groß sind. Und wenn Sie darüber nachdenken, es in die Festplatte zu schreiben, werden Sie zusätzliche Verzögerungen gegenüberstehen, da das Lesen/Schreiben im Vergleich zum RAM langsam ist.

Fazit

Sie können Python definitiv im Big -Data -Bereich verwenden (definitiv, da Menschen mit R versuchen, warum nicht Python), aber zuerst Ihre Daten und Ihre Geschäftserfordernisse kennen. Es kann bessere Tools zur Verfügung stehen und sich immer daran erinnern:

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

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

Numpy

Mit Numpys Memmory-A-Arrays können Sie auf eine Datei zugreifen, die auf der Festplatte gespeichert ist, 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 so gut 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 zum Zugriff auf die Daten verwendet wurden, können viele mathematische Operationen und andere Manipulationen der Daten durchgeführt werden, ohne sie in eine Python -Datenstruktur zu laden. Massive, hoch strukturierte Dateien sind möglich, viel größer als 5 TB. Es ermöglicht auch eine nahtlose, verlustlose Komprimierung.

Datenbanken

Es gibt verschiedene Arten von Datenbanken, mit denen Sie Big -Data -Sets speichern und nur die Teile laden können, die Sie benötigen. Mit vielen Datenbanken können Sie Manipulationen durchführen, ohne die Daten in eine Python -Datenstruktur zu laden.

Pandas

Dies ermöglicht einen höheren Zugriff auf verschiedene Arten von Daten, einschließlich HDF5-Daten, CSV-Dateien, Datenbanken und sogar Websites. Für Big Data bietet es Wrapper für den HDF5 -Dateizugriff, der die Analyse von Big -Data -Sets erleichtert.

mpi4py

Dies ist ein Tool, um Ihren Python -Code auf mehrere Prozessoren oder sogar mehrere Computer auf verteilte Weise auszuführen. Auf diese Weise können Sie gleichzeitig an Teilen Ihrer Daten arbeiten.

Dask

Es bietet eine Version des normalen Numpy-Arrays, das viele der normalen Numpy-Operationen auf multi-core-Weise unterstützt, die auf Daten funktionieren kann, die zu groß sind, um in den Speicher zu passen.

Brand

Ein Tool, das speziell für Big Data entwickelt wurde. Es handelt sich im Grunde genommen um einen Wrapper um die obigen Bibliotheken, der eine Vielzahl verschiedener Methoden zum Speichern großer Datenmengen (wie HDF5 oder Datenbanken) und Tools zur Verfügung stellt, um es einfach zu manipulieren, mathematische Operationen durchzuführen und Daten zu analysieren, die Daten analysieren, die die Daten analysieren, die die Daten ausführen, die die Daten ausführen, die Daten analysieren, die es einfach zu manipulieren, und analysieren Sie Daten, die es zu bearbeiten ist zu groß, um in das Gedächtnis zu passen.

Unbedingt. Wenn Sie in dieser Skala mit Daten arbeiten, ist es üblich, ein Big Data -Framework zu verwenden. In diesem Fall ist Python oder welche Sprache, die Sie verwenden, lediglich eine Schnittstelle. Siehe zum Beispiel Sparks Python -Programmierhandbuch. Welche Art von Daten haben Sie und was möchten Sie damit machen?

Um eine solche Datenmenge zu bewältigen, ist die Programmiersprache nicht das Hauptanliegen, sondern das Programmierrahmen. Frameworks wie MapReduce oder Spark haben Bindungen an viele Sprachen, einschließlich Python. Diese Frameworks verfügen sicherlich um viele paketierte Pakete für Datenanalyseaufgaben. Aber am Ende kommt alles zu Ihrer Anforderung, dh Ihre Aufgabe? Menschen haben unterschiedliche Definitionen von Datenanalyseaufgaben, von denen einige mit relationalen Datenbanken leicht gelöst werden können. In diesem Fall ist SQL viel besser als alle anderen Alternativen.

Ich glaube, die Sprache selbst hat wenig mit Leistungsfunktionen zu tun, wenn es um große Daten geht. Was zählt, ist:

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

Wie auch immer, Python ist in Data Science Communities gut übernommen.

Ich habe Anaconda Python 3.4 und Pandas verwendet, um die 10 -m -Zeilendatenbank zu durchsuchen, um 20.000 Anmeldeinformationen zu entsprechen. Dauert ungefähr eine Minute. Die Pandas -Interna nutzen das Gedächtnis groß. Das heißt, wirklich Big Data erfordert eine Verarbeitungsarchitektur, die dem Problem entspricht. Pandas ist in dieser Gleichung nur der Kleber (Logik), und andere Tools können dies auch tun. R, Scala, Haskell, SAS usw. können einen Teil der Logik replizieren - vielleicht gerade genug, um Fragen schneller zu beantworten. Aber Python macht ein gutes (am besten?) Allzweck-Werkzeug. Sie können R -Code in Python sowie die meisten anderen Sprachen ausführen. Obwohl es interpretativ interpretativ ist, gibt es Hochleistungstechniken und -instrumente wie Pypy, die Python mit nur geringfügig mehr Aufwand so schnell wie Benchmark -Tools laufen lassen können. Und Python hat viele Bibliotheken, die fast alles tun - siehe oben.

Wenn Sie sich fragen, ob Sie Python lernen und verwenden sollten, ist meine Antwort lautet. Artikel zeigen, dass Python beider Menschen mehr als R verwendet wird. Aber nur wenige Datenwissenschaftsprobleme werden durch ein einzelnes Tool gelöst. Es kann zu Ihrem Werkzeug werden, aber es ist nur das - ein Werkzeug. Und so wie keine vernünftige Person ein Haus mit nur einem Hammer baut, verwendet kein vernünftiger Datenwissenschaftler nur ein Tool.

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 die richtigen "Wert" -Informationen, sondern Dokumente, Bilder usw.

Um Big Data zu verarbeiten, brauchen wir Geschwindigkeit. Python ist nicht in der Liga, also R., aber wenn die Aufgabe so einfach ist, einen CSV zu nehmen und in eine Datenbank einzufügen, dann benötigen wir dafür keine Programmierung.

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

IMHO, Java ist besser für Big Data (für die gesamte Kette) geeignet, aber die Leute nehmen Python aus irgendeinem unpraktischen Grund als Standard.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top