Big Data Manipulation zum Spaß und Gewinn Teil 2

Big Data Manipulation zum Spaß und Gewinn Teil 2

Im ersten Teil dieser Big Data Manipulations -Serie, die Sie zuerst lesen möchten, wenn Sie sie noch nicht gelesen haben; Big Data Manipulation für Spaß und Profit Teil 1 - Wir haben ausführlich die verschiedenen Terminologien und einige der Ideen im Zusammenhang mit Big Data oder insbesondere in Bezug auf Handhabung, Transformation, Müdeln, Munding, Parsen, Verbrennen, Verschmelzen, Transformieren und Manipulieren besprochen Daten. Oft werden diese Begriffe austauschbar und oft ihre Verwendung überlappt. Wir haben uns auch die ersten Bash -Tools angesehen, die uns bei der Arbeit im Zusammenhang mit diesen Begriffen helfen können.

In diesem Artikel werden weitere Bash-Tools untersucht, die uns bei der Verarbeitung und Manipulation von textbasierten (oder in einigen Fällen binärer) Big Data helfen können. Wie im vorherigen Artikel 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.

Und wenn Sie erfahren möchten, warum Big Data Manipulation sowohl profitabel als auch unterhaltsam sein kann, lesen Sie bitte zuerst Teil 1.

In diesem Tutorial lernen Sie:

  • Weitere Big -Data -Wrangling- / Parsen- / Handhabungs- / Manipulations- / Transformationstechniken
  • Welche Bash -Tools zur Verfügung stehen, um Ihnen zu helfen, speziell für textbasierte Anwendungen
  • Beispiele, die unterschiedliche Methoden und Ansätze zeigen
Big Data Manipulation zum Spaß und Gewinn Teil 2

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: awk

Zurück zu den Daten, die wir in unserem ersten Artikel in dieser Serie verwendet haben (ein kleiner heruntergeladener Teil der Wikipedia -Datenbank), können wir awk verwenden, um die Daten zu manipulieren:

$ grep '31197816' Enwiki-latest-Seiten-Artikel-Multistream-Index19.TXT-P30121851P31308442 269019710: 31197816: Linux ist mein Freund $ grep '31197816' Enwiki-Latest-Seiten-Articel-Multistream-Index19.TXT-P30121851P31308442 | awk 'print $ 2' ist 

Zuerst haben wir in der Flat -Text -Datenbankdatei nach einem bestimmten Element gegründet. Sobald wir die Ausgabe hatten (269019710: 31197816: Linux ist mein Freund), dann haben wir versucht, die zweite Spalte mit der Anweisung zu drucken Druck $ 2 (Drucken Sie die zweite Spalte) zu awk, Aber dies scheiterte, das Rendering Ist. Der Grund dafür ist, dass die awk Die standardmäßige Nützlichkeit verwendet Whitespace (Speicherplatz oder Registerkarte. Wir können dies bestätigen, indem wir das Handbuch lesen (Mann awk) oder einfach durch Testen;

$ echo -e 'test1 \ ttest2' test1 Test2 $ echo -e 'test1 \ test2' | awk 'print $ 2' test2 $ echo -e 'test1 test2' | awk 'print $ 2' test2 

In der ersten Zeile fügen wir einen regulären Ausdruck (REGEX) (REGEX) ein ((\T) im Ausgang zu erzeugen durch Echo und wir ermöglichen die reguläre Expressionssyntax, indem wir angeben -e Zu Echo. Wenn Sie mehr über regelmäßige Ausdrücke in Bash und anderswo erfahren möchten, finden Sie Bash Regexps für Anfänger mit Beispielen, Advanced Bash Regex mit Beispielen und die halbbezogenen Python-regulären Ausdrücke mit Beispielen mit Beispielen.

Anschließend verwenden wir wieder awk So drucken Sie die zweite Spalte Druck $ 2 und sehen Sie, dass die Ausgabe diesmal korrekt ist. Schließlich testen wir mit "und sehen die Ausgabe erneut richtig als Test2. Wir können auch in unserem früheren Beispiel sehen, dass der Text 269019710: 31197816: Linux Und Ist wird durch einen Raum getrennt - der der Arbeit von entspricht awk. Die detaillierten Informationen über die Arbeit von awk ist hier hilfreich, da oft Daten auf verschiedene Weise formatiert werden. Möglicherweise sehen Sie Räume, Registerkarten, Kolons, Semikolons und andere Symbole, die als Feldabscheider verwendet werden. Und es wird noch komplexer, wenn es um HTML, XML, JSON, MD usw. geht. Formate.

Wechseln wir das Trennzeichen, indem wir das verwenden -F Option zu awk:

$ grep '31197816' Enwiki-latest-Seiten-Artikel-Multistream-Index19.TXT-P30121851P31308442 | awk -f ': "print $ 2' 31197816 

Genau das, was wir brauchen. -F wird in der beschrieben awk Handbuch als das Eingangsfeldtrennzeichen. Sie können sehen, wie awk zum Drucken verschiedener Spalten in den Daten drucken $ 2 Zu $ 3 um die dritte Spalte zu drucken, usw.), damit wir es weiter in das Format verarbeiten können, das wir mögen. Lassen Sie uns die Reihenfolge der Felder ändern und ein Feld fallen lassen, von dem wir nicht glauben, dass wir es brauchen:

$ grep '31197816' Enwiki-latest-Seiten-Artikel-Multistream-Index19.TXT-P30121851P31308442 | awk -f ': "print $ 3" ​​\ t "$ 2'> out $ cat out Linux ist mein Freund 31197816 


Großartig! Wir haben die Reihenfolge der Spalten 2 und 3 geändert und die Ausgabe an eine neue Datei gesendet und den Trennzeichen in a geändert Tab (Danke an die "\T" In die Druckanweisung einfügen). Wenn wir jetzt einfach die gesamte Datei verarbeiten:

$ awk -f ': "print $ 3" ​​\ t "$ 2' Enwiki-latest-Pages-Articles-Multistream-Index19.TXT-P30121851P31308442> Out $ 

Die gesamten Eingabedaten werden strukturell in das neue Format geändert! Willkommen in der lustigen Welt der Big Data Manipulation. Sie können sehen, wie wir mit ein paar einfachen Bash -Befehlen die Datei im Wesentlichen umstrukturieren/ändern können. Ich habe immer gefunden Verprügeln am nächsten am idealen Toolset für die Manipulation von Big Data in Kombination mit einigen Werkstools und möglicherweise von Python-Codierung kommen. Einer der Hauptgründe dafür ist die Vielzahl der in Bash verfügbaren Tools, die die Manipulation von Big Data erleichtern.

Überprüfen Sie als nächstes unsere Arbeit

WC -L Enwiki-latest-Seiten-Artikel-Multistream-Index19.TXT-P30121851P31308442 329956 ENWIKI-LATEST-PAGES-ATICE-Multistream-Index19.TXT -P30121851P31308442 $ WC -L Out 329956 Out $ Grep '31197816' Out Linux ist mein Freund 31197816 

Großartig - Die gleiche Anzahl von Zeilen befindet sich im Original- und der geänderten Datei. Und das spezifische Beispiel, das wir zuvor verwendet haben. Alles gut. Wenn Sie möchten, können Sie ein wenig weiter mit Befehlen wie möglich graben Kopf Und Schwanz gegen beide Dateien, um zu überprüfen, ob die Zeilen auf der gesamten Platine korrekt verändert werden.

Sie könnten sogar versuchen, die Datei in Ihrem bevorzugten Texteditor zu öffnen, aber ich würde persönlich empfehlen vi Da die Anzahl der Zeilen groß ist und nicht alle Textredakteure gut damit umgehen können. vi Dauert eine Weile, um zu lernen, aber es ist eine Reise, die es wert ist, unternommen zu werden. Sobald Sie gut werden mit vi, Sie werden nie zurückblicken - es wächst sozusagen auf Ihnen.

Beispiel 2: TR

Wir können die verwenden tr Dienstprogramm zum Übersetzen oder Löschen einiger Zeichen:

$ grep '31197816' Enwiki-latest-Seiten-Artikel-Multistream-Index19.TXT-P30121851P31308442 | tr ': "\ t' 269019710 31197816 Linux ist mein Freund 

Hier ändern wir unseren Feldabscheider (Dickdarmdarm ():) zu Tab (\T). Einfach und unkompliziert, und die Syntax spricht für sich selbst.

Sie können auch verwenden tr Um einen Zeichen zu löschen:

$ grep '31197816' Enwiki-latest-Seiten-Artikel-Multistream-Index19.TXT-P30121851P31308442 | Tr -D ':' | Tr -D '[0-9]' Linux ist mein Freund 


Sie können sehen, wie wir zum ersten Mal entfernt wurden : Aus der Ausgabe unter Verwendung des Löschens (-D) Option zu tr, und als nächstes haben wir entfernt - unter Verwendung eines regulären Ausdrucks - eine beliebige Zahl im 0-9 -Bereich ([0-9]).

Beachten Sie, wie Änderung der Veränderung :: Zu \T Ermöglicht es uns immer noch nicht, awk zu verwenden, ohne den Feldabscheider zu ändern, da es jetzt beide Registerkarten gibt (\T) und Leerzeichen in der Ausgabe, und beide werden standardmäßig gesehen (in awk) als Feldabscheider. Also drucken $ 3 Mit awk führt nur das erste Wort (bevor ein Raum zu sehen ist):

$ grep '31197816' Enwiki-latest-Seiten-Artikel-Multistream-Index19.TXT-P30121851P31308442 | tr ': "\ t' | awk 'print $ 3' Linux 

Dies zeigt auch, warum es immer sehr wichtig ist, alle Ihre regulären Ausdrücke und Datentransformations-/Manipulationsbefehlsanweisungen zu testen, erneut zu testen und zu testen.

Abschluss

Die Vielzahl von Tools in Bash macht Big Data Manipulationsspaß und in einigen Fällen sehr einfach. In diesem zweiten Artikel in der Serie untersuchten wir weiterhin Bash -Tools, die uns bei der Manipulation von Big Data helfen können.

Genießen Sie die Reise, aber erinnern Sie sich an die Warnung am Ende des ersten Artikels… Big Data kann sich eigenständig ansehen, und es besteht die Gefahren bei der Arbeit mit vielen Daten (oder mit Überlastung in Eingabe, wie in täglich Leben), und diese sind (hauptsächlich) Wahrnehmungsüberlastung, Perfektion übertrieben, Zeitverluste und präfrontaler Kortex (und andere Gehirnbereiche) überbeansprucht. Je komplexer das Projekt, Quelldaten oder Zielformat ist, desto größer ist das Risiko. Aus viel Erfahrung hier sprechen.

Eine gute Möglichkeit, diesen Gefahren entgegenzuwirken, besteht darin, strenge Zeitbeschränkungen für die Arbeit mit komplexen und großen Datensätzen festzulegen. Zum Beispiel 2 Stunden (zu maximal) pro Tag. Sie werden überrascht sein, was Sie erreichen können, wenn Sie Ihre Meinung auf zwei Stunden festlegen und nicht durchweg durchgehen, konsequent durchgehen. Sag nicht, ich habe dich nicht gewarnt 🙂

Lassen Sie uns Ihre Gedanken unten wissen - interessante große Datensätze, Strategien (sowohl technischer und Lebensstil/Ansatz) und andere Ideen sind willkommen!

Verwandte Linux -Tutorials:

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