Manipulacja Big Data dla zabawy i zysku Część 3

Manipulacja Big Data dla zabawy i zysku Część 3

W tej serii były dwa poprzednie artykuły, które możesz chcieć przeczytać najpierw, jeśli jeszcze ich nie przeczytałeś; Manipulacja Big Data dla zabawy i zysku Część 1 oraz manipulacja Big Data dla zabawy i zysku Część 2.

W tej serii omawiamy różne pomysły i praktyczne podejścia do obsługi dużych zbiorów danych, a dokładniej obsługi, przekształcania, małowania, mungowania, analizowania, rozpowszechniania, przekształcania i manipulowania danymi na linii poleceń Linux.

Ten trzeci artykuł z serii będzie kontynuował eksplorowanie narzędzi Bash, które mogą nam pomóc podczas przetwarzania i manipulowania tekstem (lub w niektórych przypadkach binarnych) dużych zbiorów danych. Jak wspomniano w poprzednich artykułach, transformacja danych w ogóle jest przedmiotem półstanowym, ponieważ istnieją setki narzędzi dla każdego konkretnego formatu tekstu. Pamiętaj, że czasami korzystanie z narzędzi BASH może nie być najlepszym rozwiązaniem, ponieważ narzędzie gotowe może wykonywać lepszą pracę. To powiedziawszy, ta seria jest specjalnie dla tych wszystkich (wielu) innym razem, gdy żadne narzędzie nie jest dostępne, aby uzyskać dane w wybranym formacie.

Wreszcie, jeśli chcesz dowiedzieć się więcej o tym, dlaczego manipulacja Big Data może być zarówno zabawna, jak i opłacalna… najpierw przeczytaj część 1.

W tym samouczku się nauczysz:

  • Dodatkowe techniki Warngling / Parsing / Managing / Manipulacja / Transformacja
  • Jakie narzędzia Bash są dostępne, aby Ci pomóc, szczególnie w aplikacjach tekstowych
  • Różne przykłady, pokazujące różne metody i podejścia
Manipulacja Big Data dla zabawy i zysku Część 3

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny od rozkładu Linuksa
Oprogramowanie Wiersz poleceń Bash, system oparty na Linuksie
Inny Wszelkie narzędzie, które nie jest zawarte w skorupce Bash domyślnie można zainstalować za pomocą za pomocą sudo apt-get instal instal narzędzie (Lub Mnij instalacja dla systemów opartych na Redhat)
Konwencje # - Wymaga wykonywania Linux -Commands z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$-Wymaga wykonania Linux-commands jako zwykłego niepewnego użytkownika


Przykład 1: WC, Head i VI - Badanie danych

W tym przykładzie będziemy pracować z plikami statusu JSON, utworzonym przez Wikipedia w ramach zrzutów danych (ref folder w https: // zrzut.Wikimedia.org/enwiki/)

wget https: // zrzut.Wikimedia.Org/Enwiki/20201020/Dumpstatus.JSON $ Head -C100 Dumpstatus.JSON „wersja”: „0.8 ",„ erson ”: „ PageRestrictionStable ”: „ Status ”:„ gotowe ”,„ pliki ”: „ ENWIKI-20201020-P $ WC -L DUMPSTATUS.JSON 1 

wget Polecenie pobiera dla nas plik (to polecenie jest również przydatne, jeśli musisz pobrać duży zestaw plików danych i chcesz go zautomatyzować w wierszu poleceń) oraz Głowa -C100 pokazuje pierwsze 100 znaków pliku. To świetny sposób na szybkie sprawdzenie górnej głowy pliku.

Jeśli plik był w jakiś sposób dane binarne, używając Głowa -C100 polecenie nie zrobi zbyt wiele bałaganu w terminalu, a jeśli wiersze są bardzo długie (jak dotyczy tego pliku), to polecenie zapewnia, że ​​nie zobaczymy wielu stron przewijania tekstu.

WC -L polecenie pokazuje nam liczbę wierszy.

Przed rozpoczęciem pracy z jakimkolwiek dużymi zbiorami danych zawsze warto sprawdzić zawartość pliku, z którym pracujesz. Osobiście używam i wolę vi, Ale możesz każdy edytor tekstu, który czuje się dla Ciebie komfortowo. Jedna z korzyści vi jest to, że jest doskonały w otwieraniu i edytowaniu bardzo dużych plików. Otwórz plik i rozejrzyj się: jak długo są linie, jakie dane są te itp.?

Warto tu zauważyć vi, Mimo że ma dużą krzywą uczenia się, jest również bardzo potężny, jeśli chodzi o operacje masowe. Na przykład wygenerowanie pliku liniowego jednego miliona liniowego może być szybsze, po prostu wykonując kilka poleceń VI w VI, a następnie napisać mały skrypt, aby zrobić to samo. Jednym wielkim aspektem krzywej uczenia się VI jest to, że ma on na celu wzrost wraz z tobą, ponieważ potrzebujesz dodatkowych metod lub procedur.

Ponadto, używając tylko dwóch poleceń (Głowa -C100 I WC -L), zauważając nazwę pliku i szybko sprawdzam vi Nauczyliśmy się już mnóstwa rzeczy:

  1. To jest plik JSON (.rozszerzenie JSON)
  2. Ten plik ma bardzo długą linię (vi, naciśnij klawisz END i licznik Note w prawym dolnym rogu, obecny na wielu instalacjach VI): 110365 znaków
  3. Ten plik ma pojedynczy wiersz (WC -L)
  4. Plik jest wysoce ustrukturyzowany (głowa -C100)

Chociaż jest to prosty przykład, chodzi o podkreślenie, że jeśli spędzimy trochę badań naszych danych źródłowych, możemy łatwiej z nimi pracować i zrozumieć, jak lepiej je przekształcić lub manipulować w formacie, w którym chcielibyśmy być. To podejście lub metodologia powinno stać się drugim charakterem inżyniera danych.

Kolejną ważną częścią procesu manipulacji Big Data jest rozpoznanie, które narzędzie najbardziej pomoże w danym zadaniu. Gdybyśmy robili ogólne ekstrakcje z tych danych lub manipulacje, prawdopodobnie chcielibyśmy najpierw wyszukać narzędzie kompatybilne z JSON, a nawet narzędzie specjalnie wykonane dla JSON. Istnieje wiele takich narzędzi, w tym wiele bezpłatnych i open source.

Dwa dobre miejsca początkowe to wyszukiwanie na github.com (na przykład wpisz „JSON EDIT”, aby zobaczyć, jakie są ogólne narzędzia, lub coś bardziej specyficznego, jak „Json Tree”, aby znaleźć narzędzie specyficzne dla JSON Tree Vision) oraz dowolne główne wyszukiwarki. Na GitHub jest więcej niż 100 milionów repozytoriów i prawie zawsze znajdziesz co najmniej jedną lub dwie rzeczy, które bezpośrednio odnoszą.

W szczególności dla GitHub będziesz chciał mieć krótkie i ogólne słowa kluczowe, aby mieć maksymalną liczbę odpowiednich dopasowań. Pamiętaj, że chociaż Github rzeczywiście ma więcej niż 100 milionów repozytoriów, jest bardzo mały w porównaniu z głównymi wyszukiwarkami, a zatem zbyt konkretne wyszukiwanie (więcej niż 2-3 słowa lub szczegółowe słowa w dowolnym zakresie) często powoduje biedne lub nie. wyniki.

„JSON” (dla ogólnego wrażenia za darmo „Marketplace”), „Json Edit” i „Json Tree” są dobrymi przykładami. „Json Tree Builder” i „Json Tree Edit” są graniczne, a bardziej szczegółowe niż może to nie zwrócić żadnych pomocnych wyników.

W tym projekcie udajemy, że przeanalizowaliśmy wszystkie dostępne narzędzia JSON i nie stwierdzimy, że nie są odpowiednie dla tego, co chcieliśmy zrobić: chcemy zmienić wszystko Do _ I " Do =, i usuń wszystkie przestrzenie. Następnie przekazujemy te dane naszemu fikcyjnego robota AI, który jest zaprogramowany do naprawy błędów w JSON. Chcemy złamać JSON, aby sprawdzić, czy robot osiągnie dobrze.

Następnie przekształćmy niektóre z tych danych i zmodyfikuj składnię JSON za pomocą SED.



Przykład 2: SED

Edytor strumienia (SED) to potężne narzędzie, które można wykorzystać do szerokiej gamy zadań manipulacyjnych dużych zbiorów danych, szczególnie przy użyciu wyrażeń regularnych (Regex). Proponuję zacząć od przeczytania naszego artykułu Advanced Bash Regex z przykładami lub bratkiem dla początkujących z przykładami, jeśli dopiero zaczynasz od sed i wyrażeń regularnych. Aby dowiedzieć się więcej o wyrażeniach regularnych w ogóle, możesz również znaleźć wyrażenia regularne Python z przykładami, które są interesujące.

Zgodnie z naszym planem podejścia zmienimy wszystko Do _ I " Do =, i usuń wszystkie przestrzenie. Jest to łatwe do zrobienia z SED. Na początek weźmiemy małą próbkę z większego pliku danych, aby przetestować nasze rozwiązanie. Jest to powszechna praktyka podczas obsługi dużych ilości danych, ponieważ można by 1 1) upewnić się, że rozwiązanie dokładnie działa, 2) przed zmianą pliku pod ręką. Testujmy:

$ echo '"status": "gotowe' | sed 's | | _ | g; s |" | = | g' _ = status =: = gotowe 

Świetnie, wygląda na to, że nasze rozwiązanie częściowo działa. Zmieniliśmy Do _ I " Do =, ale jeszcze nie usunął przestrzeni. Najpierw spójrzmy na instrukcję SED. S Polecenie w ogólnym poleceniu SED (zamknięte przez pojedyncze cytaty) zastępuje jeden kawałek tekstu innym, a jest to wyrażenie regularne. W ten sposób zmieniliśmy dwie postacie, które chcieliśmy zmienić w podejściu na bazie. Wprowadziliśmy również zmianę w całym wejściu za pomocą G (globalny) opcja SED.

Innymi słowy, można napisać tę instrukcję SED jako: Zastępca | od | do | globalny, Lub s | f | t | g (w którym to przypadku F zostanie zastąpiony przez T). Następnie przetestujmy usuwanie przestrzeni:

$ echo '„status”: „Done” | sed' s | | _ | g; s | "| = | g; s | *|| g '_ = status =: = gotowe 


Nasze ostateczne polecenie zastępcze (s | *|| g) zawiera wyrażenie regularne, które przyjmie dowolną liczbę (*) przestrzeni i zastąp go na „nic” (odpowiadające pustemu polu „do”).

Wiemy teraz, że nasze rozwiązanie działa poprawnie i możemy użyć tego w pełnym pliku. Chodźmy i zróbmy to:

$ sed -i 's | | _ | g; s | "| = | g' wysyłka.JSON 

Tutaj używamy -I opcja sed i przekazała plik (Dumpstatus.JSON) jako opcja na końcu linii. To zrobi inline (-I) Wykonanie polecenia SED bezpośrednio w pliku. Nie są wymagane tymczasowe lub pomiędzy plikami. Następnie możemy użyć vi ponownie, aby sprawdzić, czy nasze rozwiązanie działało poprawnie. Nasze dane są teraz gotowe do naszego fikcyjnego robota AI, aby pokazać, że to umiejętności naprawy JSON!

Często dobrze jest również szybko pobrać kopię pliku przed rozpoczęciem pracy nad nim lub w razie potrzeby pracującym z plikiem tymczasowym, choć w takim przypadku możesz preferować sed |… |… | Infile> Outfile polecenie oparte.

Uczenie się, jak dobrze używać SED i wyrażeń regularnych, ma wiele korzyści, a jedną z głównych korzyści jest to, że będziesz mógł łatwiej obsługiwać duże dane tekstowe, używając sed Aby to przekształcić / manipulować.

Wniosek

Jeśli nie przeczytałeś naszych poprzednich dwóch artykułów z tej serii i uważam, że temat jest interesujący, zdecydowanie zachęcam do tego. Linki do nich znajdują się na powyższym wprowadzeniu. Jednym z powodów tego jest ostrzeżenie podkreślone w dwóch pierwszych dwóch artykułach, aby zarządzać czasem i zaangażowaniem w technologię, jeśli chodzi o obsługę dużych zbiorów danych, i/lub inne złożone tematy IT w ogóle, takie jak Complex AI System. Staranie umysłu w sposób ciągły ma zwykle na celu słabe wyniki długoterminowe, a (nadmiernie) złożone projekty mają tendencję do tego. Przeglądając te artykuły, możesz również dowiedzieć się o innych narzędziach do manipulacji dużymi zbiorami danych.

W tym artykule wyjaśniliśmy, w jaki sposób inżynierowie danych powinni starać się zrozumieć dane, nad którymi dobrze pracują, aby transformacja i manglanie były łatwiejsze i proste. Przeglądaliśmy również różne narzędzia, które mogą pomóc nam dowiedzieć się więcej o danych, a także ich przekształcić.

Czy znalazłeś ciekawe duże zestawy danych lub opracował wielkie strategie obsługi dużych danych (techniczny i/lub styl życia/podejście)? Jeśli tak, zostaw nam komentarz!

Powiązane samouczki Linux:

  • Big Data Manipulacja dla zabawy i zysku Część 1
  • Manipulacja Big Data dla zabawy i zysku Część 2
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Zagnieżdżone pętle w skryptach Bash
  • Mastering Bash Script Loops
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Jak podwójnie rozruch Kali Linux i Windows 10
  • Ubuntu 20.04 sztuczki i rzeczy, których możesz nie wiedzieć