Big Data Manipulation zum Spaß und Gewinn Teil 3

Big Data Manipulation zum Spaß und Gewinn Teil 3

In dieser Serie gab es zwei Artikel, die Sie vielleicht zuerst lesen möchten, wenn Sie sie noch nicht gelesen haben. Big Data Manipulation für Spaß und Gewinn Teil 1 und Big Data Manipulation für Spaß und Gewinn Teil 2.

In dieser Serie diskutieren wir verschiedene Ideen und praktische Ansätze zum Umgang mit Big Data oder genauer um die Handhabung, Transformation, Mangeln, Munding, Parsen, Streiten, Transformation und Manipulation der Daten in der Linux -Befehlszeile.

In diesem dritten Artikel in der Serie werden Bash-Tools weiter untersucht, die uns bei der Verarbeitung und Manipulation von textbasierten (oder in einigen Fällen binärer) Big Data helfen können. Wie in den vorherigen Artikeln erwähnt, ist die Datenumwandlung im Allgemeinen ein halbloses Thema, da es Hunderte von Tools für jedes bestimmte Textformat gibt. Denken Sie daran, dass die Verwendung von Bash-Tools manchmal möglicherweise nicht die beste Lösung ist, da ein Off-the-Shelf-Tool möglicherweise bessere Arbeit leisten kann. Diese Serie ist jedoch speziell für all diese (viele) Zeiten, in denen kein Tool verfügbar ist, um Ihre Daten im Format Ihrer Wahl zu erhalten.

Wenn Sie schließlich mehr darüber erfahren möchten, warum Big Data Manipulation sowohl Spaß als auch profitabel sein kann ... lesen Sie bitte zuerst Teil 1.

In diesem Tutorial lernen Sie:

  • Zusätzliche Big -Data
  • Welche Bash -Tools zur Verfügung stehen, um Sie zu unterstützen, insbesondere für textbasierte Anwendungen
  • Verschiedene Beispiele, die unterschiedliche Methoden und Ansätze zeigen
Big Data Manipulation zum Spaß und Gewinn Teil 3

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Linux-Verteilungsunabhängige
Software BASH -Befehlszeile, Linux -basiertes System
Andere Jedes Dienstprogramm, das standardmäßig nicht in der Bash -Shell enthalten ist sudo apt-Get Installieren Sie den Dienstprogramm (oder yum install Für Redhat -basierte Systeme)
Konventionen # - Erfordert, dass Linux -Commands mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mithilfe von verwendet werden sudo Befehl
$-erfordert, dass Linux-Commands als regulärer nicht privilegierter Benutzer ausgeführt werden


Beispiel 1: WC, Head und Vi - Daten untersuchen

In diesem Beispiel werden wir mit einer von Wikipedia als Teil ihrer Datendumps erstellten JSON -Statusdatei arbeiten (Refy Ordner in https: // Dumps.Wikimedia.org/enwiki/)

WGet https: // Dumps.Wikimedia.org/enwiki/20201020/Dumpstatus.Json $ head -c100 Dumpstatus.JSON "Version": "0.8 "," job.JSON 1 

Der wget Der Befehl ruft die Datei für uns ab (dieser Befehl ist auch praktisch, wenn Sie einen großen Satz von Datendateien herunterladen und sie in Ihrer Befehlszeile automatisieren möchten) und der Kopf -c100 Zeigt die ersten 100 Zeichen der Datei an. Dies ist eine großartige Möglichkeit, den oberen Kopf der Datei schnell zu überprüfen.

Wenn die Datei irgendwie binäre Daten waren, verwenden Sie die Kopf -c100 Der Befehl wird in Ihrem Terminal nicht zu sehr durcheinander gebracht, und wenn die Zeilen sehr lang sind (wie dies für diese Datei der Fall ist), stellt dieser Befehl sicher.

Der WC -l Der Befehl zeigt uns die Anzahl der Zeilen an.

Bevor Sie mit Big Data beginnen, ist es immer eine gute Idee, den Inhalt der Datei zu überprüfen, mit der Sie arbeiten. Ich persönlich benutze und bevorzuge vi, Sie können jedoch jeden Texteditor, der sich für Sie wohl fühlt. Einer der Vorteile von vi Ist es hervorragend darin, sehr große Dateien zu öffnen und zu bearbeiten. Öffnen Sie die Datei und schauen Sie sich um: Wie lange sind Zeilen, welche Art von Daten sind diese usw.?

Es ist interessant zu bemerken, dass hier festgestellt wird vi, Auch wenn es eine große Lernkurve hat, ist es auch sehr leistungsfähig, wenn es um Massenoperationen geht. Zum Beispiel kann es schneller sein, eine Zeilendatei mit einer Million Zeilen zu generieren, indem einfach ein paar VI -Befehle innerhalb von VI ausgeführt wird, um dann ein kleines Skript zu schreiben, um dasselbe zu tun. Ein großer Aspekt an der Lernkurve von VI ist, dass es mit Ihnen wächst, wenn Sie zusätzliche Methoden oder Verfahren benötigen.

Verwenden Sie auch nur zwei Befehle (Kopf -c100 Und WC -l) den Dateinamen bemerken und schnell mit überprüften vi Wir haben bereits eine Vielzahl von Dingen gelernt:

  1. Dies ist eine JSON -Datei (.JSON -Erweiterung)
  2. Diese Datei verfügt über sehr lange Zeilen (en) (VI, Drücken Sie die Endtaste und einen Notizbezirk unten rechts, in vielen VI -Installationen): 110365 Zeichen
  3. Diese Datei hat eine einzelne Zeile (WC -l)
  4. Die Datei ist stark strukturiert (Kopf -c100)

Während dies ein einfaches Beispiel ist, ist die Idee, hervorzuheben, dass wir, wenn wir ein wenig unsere Quelldaten recherchieren, leichter damit arbeiten und verstehen können, wie man sie besser in das Format verwandelt oder manipuliert, in dem wir möchten, dass es sich befindet. Dieser Ansatz oder diese Methodik sollte für den Dateningenieur eine zweite Natur werden.

Der nächste wichtige Teil des Big Data Manipulation -Prozesss besteht darin, zu erkennen, welches Tool bei der anstehenden Aufgabe am meisten hilft. Wenn wir generische Extraktionen von oder Manipulationen auf diese Daten vornehmen würden, möchten wir wahrscheinlich zuerst nach einem JSON -kompatiblen Tool oder sogar nach einem speziell für JSON hergestellten Tool suchen. Es gibt viele solcher Tools, darunter viele kostenlose und Open Source -.

Zwei gute Startplätze sind die Suche auf GitHub.com (zum Beispiel Typ 'Json Edit', um zu sehen, welche generischen Tools es gibt, oder etwas Spezifischeres wie 'JSON Tree', um ein Tool zu finden. Es gibt mehr als 100 Millionen Repositories auf GitHub, und Sie werden fast immer mindestens ein oder zwei Dinge finden, die sich direkt mit Ihrer Aufgabe oder Ihrem Projekt in Verbindung setzen und möglicherweise helfen können.

Für GitHub möchten Sie die Keywords kurz und allgemein halten, um die maximale Anzahl relevanter Übereinstimmungen zu haben. Denken Sie daran, dass Github zwar mehr als 100 Millionen Repositorys hat, es im Vergleich zu großen Suchmaschinen sehr gering ist und damit zu spezifisch eine Suche (mehr als 2-3 Wörter oder detaillierte Wörter in jedem Umfang) häufig zu Armen oder NUR führt Ergebnisse.

"JSON" (für einen generischen Eindruck des freien "Marktplatzes"), "Json Edit" und "Json Tree" sind alles gute Beispiele. "JSON Tree Builder" und "Json Tree Edit" sind Grenzlinien, und dies kann genauer gesagt, dies kann keine hilfreichen Ergebnisse zurückgeben.

Für dieses Projekt werden wir so tun, als hätten wir alle verfügbaren JSON -Tools analysiert und festgestellt, dass keiner für das geeignet ist, was wir tun wollten: Wir wollen alle ändern Zu _ Und " Zu =, und entfernen Sie alle Räume. Wir werden diese Daten dann an unseren fiktiven KI -Roboter füttern, der programmiert ist, um Fehler in JSON zu beheben. Wir wollen JSON gebrochen haben, um zu sehen, ob der Roboter gut abschneidet.

Lassen Sie uns als nächstes einige dieser Daten transformieren und die JSON -Syntax mit SED ändern.



Beispiel 2: SED

Der Stream Editor (SED) ist ein leistungsstarkes Dienstprogramm, das für eine Vielzahl von Big -Data -Manipulationsaufgaben verwendet werden kann, insbesondere durch die Verwendung regulärer Ausdrücke (REGEX). Ich schlage vor, mit Beispielen unseren Artikel Advanced Bash Regex mit Beispielen zu lesen oder Regexps für Anfänger mit Beispielen zu veröffentlichen, wenn Sie gerade erst mit SED und regulären Ausdrücken beginnen. Um ein bisschen mehr über reguläre Ausdrücke im Allgemeinen zu erfahren, können Sie auch Python -reguläre Ausdrücke mit Beispielen finden, die von Interesse sind.

Nach unserem Ansatzplan werden wir alle ändern Zu _ Und " Zu =, und entfernen Sie alle Räume. Dies ist leicht mit SED zu tun. Zu Beginn nehmen wir eine kleine Stichprobe aus der größeren Datendatei, um unsere Lösung zu testen. Dies ist eine gängige Praxis bei der Behandlung großer Datenmengen, wie man es möchte 1) sicherstellen. Testen wir:

$ echo '"Status": "Done' | sed 's | | _ | g; s |" | = | g' _ = status =: = done 

Großartig, es sieht so aus, als ob unsere Lösung teilweise funktioniert. Wir haben uns verändert Zu _ Und " Zu =, haben die Räume aber noch nicht entfernt. Schauen wir uns zuerst die SED -Anweisung an. Der S Befehl im Gesamt -SED. Wir haben die beiden Charaktere, die wir in einem von zu to basierten Ansatz ändern wollten, geändert. Wir haben auch die Änderung über den gesamten Eingang mit dem vorgenommen G (globale) Option zu SED.

Mit anderen Worten, man könnte diese SED -Anweisung schreiben als: Ersatz | von | nach | global, oder s | f | t | g (in welchem ​​Fall F würde durch ersetzt durch T). Lassen Sie uns als nächstes die Entfernung von Räumen testen:

$ echo '"Status": "Done' | sed 's | | _ | g; s |" | = | g; s | *|| g '_ = Status =: = fertig 


Unser letztes Ersatzkommando (s | *|| g) einen regulären Ausdruck, der eine beliebige Zahl erfordert (*) von Räumen und ersetzen Sie es durch 'nichts' (entsprechend dem leeren 'zu' Feld).

Wir wissen jetzt, dass unsere Lösung korrekt funktioniert und dies in der vollständigen Datei verwenden können. Lass uns weitermachen und tun:

$ sed -i 's | | _ | g; s | "| = | g' Dumpstatus.JSON 

Hier benutzen wir die -ich Option zum SED und übergeben die Datei (Dumpstatus.JSON) als Option am Ende der Linie. Dies wird eine Inline (-ich) SED -Befehlsausführung direkt in der Datei. Es sind keine vorübergehenden oder Zwischendateien erforderlich. Wir können dann verwenden vi erneut, um zu überprüfen, ob unsere Lösung richtig funktioniert hat. Unsere Daten sind jetzt bereit für unseren fiktiven KI -Roboter, um zu zeigen!

Es ist auch oft eine gute Idee, schnell eine Kopie der Datei zu holen, bevor Sie daran arbeiten, oder gegebenenfalls mit einer temporären Datei zu arbeiten sed 's |… |… |' Infile> Outfile basierter Befehl.

Das Erlernen des Verwendens von SED und regelmäßige Ausdrücke hat viele Vorteile, und einer der Hauptvorteile besteht darin, dass Sie in der Lage sein, mit großen Textdaten einfacher zu handhaben, indem Sie verwenden sed Um es zu verwandeln / zu manipulieren.

Abschluss

Wenn Sie unsere beiden vorherigen Artikel in dieser Serie nicht gelesen haben und das Thema interessant finden, empfehle ich Ihnen dringend, dies zu tun. Die Links dafür sind in der obigen Einführung. Ein Grund dafür ist die Warnung, die in den ersten beiden Artikeln hervorgehoben wird, um Ihre Zeit und Ihr Engagement mit der Technologie zu verwalten, wenn es um die Behandlung von Big Data und/oder anderen komplexen IT -Themen im Allgemeinen wie komplexes KI -System geht. Die ständige Belastung des Geistes führt dazu. Wenn Sie diese Artikel überprüfen, können Sie auch andere Tools kennenlernen, die für die Manipulation von Big Data verwendet werden können.

Für diesen Artikel haben wir erklärt, wie Dateningenieure versuchen sollten, die Daten zu verstehen, an denen sie gut arbeiten. Wir haben uns auch verschiedene Tools angesehen, die uns helfen können, mehr über die Daten zu erfahren und sie zu verwandeln.

Haben Sie interessante große Datensätze gefunden oder Strategien zur Bearbeitung von großen Daten entwickelt (technischer und/oder Lebensstil/Ansatz)? Wenn ja, hinterlassen Sie uns einen Kommentar!

Verwandte Linux -Tutorials:

  • Big Data Manipulation zum Spaß und Gewinn Teil 1
  • Big Data Manipulation zum Spaß und Gewinn Teil 2
  • Dinge zu installieren auf Ubuntu 20.04
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Verschachtelte Schleifen in Bash -Skripten
  • Mastering -Bash -Skriptschleifen beherrschen
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Wie man Kali Linux und Windows 10 Dual -Boot -Start hat
  • Ubuntu 20.04 Tricks und Dinge, die Sie vielleicht nicht wissen