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

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

W dzisiejszych czasach wydaje się, że wszyscy mówią o dużych zbiorach danych - ale co to naprawdę oznacza? Termin ten jest używany dość niejednoznacznie w różnych sytuacjach. Do celów tego artykułu i serii będziemy odwołać się do dużych zbiorów danych, ilekroć będziemy rozumieć „dużą ilość danych tekstowych w dowolnym formacie (na przykład zwykły tekst ASCII, XML, HTML lub dowolne inne czytne ludzkie lub półprzezroczyste lub pół-czyli --. Niektóre pokazane techniki mogą również działać w przypadku danych binarnych, w przypadku stosowania z opieką i wiedzą.

Więc dlaczego zabawa (tytuł ref)?

Obsługa gigabajtów surowych danych tekstowych w szybkim i wydajnym skrypcie, a nawet przy użyciu polecenia jedno-liniowego (patrz przykłady Linux Complex Bash One Liner, aby dowiedzieć się więcej o jednym liniowcach w ogóle), może być całkiem zabawne, szczególnie gdy masz rzeczy działać dobrze i są w stanie automatyzować rzeczy. Nigdy nie możemy dowiedzieć się wystarczająco dużo o tym, jak obsługiwać duże zbiory danych; Kolejna trudna parsja tekstowa zawsze będzie tuż za rogiem.

I dlaczego zysk?

Wiele danych na świecie jest przechowywanych w dużych płaskich plikach tekstowych. Na przykład, czy wiesz, że możesz pobrać pełną bazę danych Wikipedii? Problem polega na tym, że często te dane są sformatowane w innym formacie, takim jak HTML, XML lub JSON, a nawet zastrzeżone formaty danych! Jak zdobyć go z jednego systemu do drugiego? Wiedząc, jak przeanalizować duże zbiory danych i dobrze je analizować, stawia całą moc na wyciągnięcie ręki, aby zmienić dane z jednego formatu na inny. Prosty? Często odpowiedź brzmi „nie”, a zatem pomaga, jeśli wiesz, co robisz. Prosty? Ten sam. Opłacalny? Regularnie, tak, zwłaszcza jeśli stajesz się dobry w obsłudze i korzystanie z dużych zbiorów danych.

Obsługa dużych zbiorów danych jest również określana jako „wiranging danych”. Zacząłem pracować z dużymi danymi ponad 17 lat temu, więc mam nadzieję, że jest coś lub dwie, które możesz odebrać z tej serii. Ogólnie rzecz biorąc, transformacja danych jako temat jest częściowo bezdoskonalona (setki narzędzi innych firm są dostępne dla każdego konkretnego formatu tekstu), ale skupię się na jednym konkretnym aspekcie, który dotyczy analizowania danych tekstowych; Korzystanie z wiersza poleceń Bash do analizowania dowolnego rodzaju danych. Czasami może to nie być najlepsze rozwiązanie (i.mi. Wstępnie utworzone narzędzie może wykonywać lepszą pracę), ale ta seria jest specjalnie dla wszystkich (wielu) innym razem, gdy nie jest dostępne żadne narzędzie, aby Twoje dane „same”.

W tym samouczku się nauczysz:

Big Data Manipulacja dla zabawy i zysku Część 1
  • Jak zacząć od dużych danych w zakresie wiroglingu / parsingu / obsługi / manipulacji / transformacji
  • Jakie narzędzia Bash są dostępne, aby Ci pomóc, szczególnie dla aplikacji tekstowych
  • Przykłady pokazujące różne metody i podejścia

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

Załóżmy, że masz następujące gotowe;
- Odp.: Twoje dane źródłowe (tekstowe) plik wejściowy w dowolnym formacie (JSON, HTML, MD, XML, tekst, TXT, CSV lub podobny)
- B: Idea, w jaki sposób dane docelowe powinny szukać docelowej aplikacji lub bezpośredniego użycia

Badałeś już wszelkie dostępne narzędzia istotne dla formatu danych źródłowych i nie zlokalizowałeś żadnego wcześniej istniejącego narzędzia, które może pomóc w uzyskaniu od A do B.

Dla wielu przedsiębiorców internetowych jest to punkt, w którym często, być może niestety, przygoda kończy się. Dla osób doświadczonych w obsłudze dużych zbiorów danych jest to punkt, w którym zaczyna się zabawna przygoda manipulacyjna Big Data :-).

Ważne jest, aby zrozumieć, jakie narzędzie może pomóc ci w tym, i jak możesz użyć każdego narzędzia do osiągnięcia następnego kroku w procesie transformacji danych, więc aby kopnąć tej serii, będę szukał jednego po drugim, o godz. wiele narzędzi dostępnych w Bash, które mogą pomóc. Zrobimy to w postaci przykładów. Zaczniemy od łatwych przykładów, więc jeśli masz już pewne doświadczenie, możesz chcieć je przeglądać i przejść do dalszych artykułów w tej serii.

Przykład 1: Plik, kot, głowa i ogon

Powiedziałem, że zaczniemy prosto, więc najpierw sprawdźmy podstawy. Musimy zrozumieć, w jaki sposób nasze dane źródłowe są ustrukturyzowane. Do tego używamy głupców plik, kot, głowa I ogon. W tym przykładzie pobrałem losową część bazy danych Wikipedii.

$ ls enwiki-letest-pages-Articles-Multistream-index19.TXT-P30121851P31308442.BZ2 $ BZIP2 -D enwiki-Latest-Pages-Articles-Multistream-Index19.TXT-P30121851P31308442.Bz2 $ ls enwiki-letest-pages-Articles-Multistream-index19.TXT-P30121851P31308442 $ PLIK ENWIKI-LATEST PAGES-Articles-Multistream-Index19.TXT-P30121851P31308442 ENWIKI-LATEST PAGES-Articles-Multistream-Index19.TXT-P30121851P31308442: UTF-8 Unicode Text $ 


Po rozpakowaniu pobierania BZ2 (bzip2) plik, używamy plik polecenie analizy zawartości pliku. Plik jest tekstowy, format UNICODE UCO-8, jak potwierdził UTF-8 Tekst Unicode wyjście po nazwie pliku. Świetnie, możemy z tym pracować; to jest „tekst” i to wszystko, co musimy wiedzieć na chwilę. Rzućmy okiem na zawartość za pomocą kot, głowa I ogon:

$ cat enwiki-letest-pages-Articles-Multistream-index19.TXT-P30121851P31308442 | Head -N296016 | ogon -n1 269019710: 31197816: Linux jest moim przyjacielem 

Chciałem zilustrować, jak używać kot, Ale to polecenie mogło zostać również skonstruowane po prostu jako:

$ Head -N296016 Enwiki-Latest-Pages-Articles-Multistream-Index19.TXT-P30121851P31308442 | ogon -n1 269019710: 31197816: Linux jest moim przyjacielem 

Próbowaliśmy a, ehrm, losowe… (lub nie tak losowe dla tych, którzy mnie znają;)… wiersz z pliku, aby zobaczyć, jaki rodzaj tekstu jest. Widzimy, że wydaje się, że są 3 pola, oddzielone :. Pierwsze dwa wyglądają numeryczne, trzeci oparty na jednym tekście. To dobry moment, aby podnieść kwestię, że należy zachować ostrożność z tego rodzaju założeniami. Założenie (i/lub domniemanie) jest matką wszystkich błędów. Często sensowne jest podejmowanie następujących kroków, zwłaszcza jeśli jesteś mniej zaznajomiony z danymi;

  1. Zbadaj strukturę danych online - czy istnieje oficjalna legenda danych, definicja struktury danych?
  2. Zbadaj przykład online, jeśli dane źródłowe są dostępne online. Jako przykład, dla powyższego przykładu, można przeszukać Wikipedia dla „269019710”, „31197816” i „Linux jest moim przyjacielem”. To odniesienia do tych liczb? Czy te liczby są używane w identyfikatorach adresów URL i/lub artykułu, czy też odnoszą się do czegoś innego itp.

Powodem tego jest w zasadzie dowiedzieć się więcej o danych, a konkretnie jego struktura. W tym przykładzie wszystko wygląda dość łatwo, ale jeśli jesteśmy wobec siebie szczerzy, nie wiemy, co oznaczają dwa pierwsze liczby i nie wiemy, czy tekst „Linux jest mój przyjaciel” odnosi się do tytułu artykułu, tytuł DVD lub okładka książek itp. Możesz zacząć widzieć, w jaki sposób obsługa dużych zbiorów danych może być przygodą, a struktury danych mogą i stać się o wiele bardziej złożone.

Powiedzmy przez chwilę, że działamy w pozycjach 1 i 2 powyżej i dowiedzieliśmy się więcej o danych i ich strukturze. Dowiedzieliśmy się (fikcyjnie), że pierwsza liczba jest grupą klasyfikacyjną dla wszystkich dzieł literackich, a druga to konkretny i unikalny identyfikator artykułu. Nauczyliśmy się również z naszych badań : jest rzeczywiście jasnym i ustalonym separatorem pola, którego nie można użyć, oprócz separacji pola. Wreszcie tekst w trzecim polu zawiera faktyczny tytuł dzieła literackiego. Ponownie, są to wymyślone definicje, które pomogą nam kontynuować eksplorację narzędzi, których możemy użyć do obsługi dużych zbiorów danych.

Jeśli żadne dane nie są dostępne na temat danych lub ich struktury, możesz zacząć od założenia danych dotyczących danych (poprzez badania) i zapisz je, a następnie zweryfikuj założenia w stosunku do wszystkich dostępnych danych, aby sprawdzić, czy założenia stoją. Regularnie, jeśli nie często, jest to jedyny sposób na rozpoczęcie przetwarzania dużych zbiorów danych. Czasami dostępna jest połączenie obu; Niektóre lekkie opis składni w połączeniu z badaniami i lekkimi założeniami dotyczącymi danych, na przykład separatorów w terenie, ciągami terminu (często \N, \R, \ r \ n, \\ 0) itp. Im więcej masz rację, tym łatwiejsza i dokładniejsza będzie Twoja praca w zakresie wiroglingu danych!

Następnie będziemy weryfikować, jak dokładne są nasze odkryte zasady. Zawsze weryfikuj swoją pracę z rzeczywistymi danymi!

Przykład 2: GREP i WC

W przykładzie 1 doszliśmy do wniosku, że pierwszą dziedziną była grupa klasyfikacyjna dla wszystkich dzieł literackich. Logicznie spróbujmy to sprawdzić…

$ GREP '269019710' ENWIKI-LATEST-PAGES-Articles-Multistream-Index19.TXT-P30121851P31308442 | WC -L 100 $ WC -L ENWIKI-LATEST PAGES-Articles-Multistream-Index19.TXT-P30121851P31308442 329956 ENWIKI-LATEST-PAGES-Articles-Multistream-Index19.TXT-P30121851P31308442 


hmmm. Mamy w sumie 100 prac literackich w pliku z około 330 tys. Linów. To nie wydaje się dobrze. Mimo to, gdy pobiliśmy tylko niewielką część bazy danych Wikipedii, nadal jest to możliwe… sprawdźmy następny element; Unikalne drugie pole ID.

$ GREP '3197816' ENWIKI-LATEST PAGES-Articles-Multistream-Index19.TXT-P30121851P31308442 269019710: 31197816: Linux jest moim przyjacielem 

Bardzo fajny. Na pierwszy rzut oka wydaje się, że jest to dokładne, ponieważ jest tylko jedna linia, która pasuje.

Trzecie pole nie byłoby tak łatwe do zweryfikowania, chociaż moglibyśmy sprawdzić, czy tekst jest przynajmniej wyjątkowy:

$ grep--binary-files = tekst „Linux is mój przyjaciel” Enwiki-Latest-Pages-Articles-Multistream-Index19.TXT-P30121851P31308442 269019710: 31197816: Linux jest moim przyjacielem 

Ok, więc tytuł wydaje się wyjątkowy.

Zwróć również uwagę, że do GREP dodano nową opcję --Fiły binarne = tekst, co jest bardzo ważną opcją do użycia na wszystkich Grep polecenia, zaczynając od dziś, dla każdego Grep polecenie, które piszesz dalej, we wszystkich swoich danych (jeszcze inny odpowiedni termin). Nie użyłem go w poprzednim Grep Polecenia, które można zapisać na złożoności. Dlaczego więc jest to tak ważne, że możesz zapytać? Powodem jest to, że często, gdy pliki tekstowe zawierają znaki specjalne, zwłaszcza narzędzia takie jak GREP, mogą postrzegać dane jako binarne.

Czasami prowadzi to do Grep nie działa poprawnie, a wyniki stają się niezdefiniowane. Ilekroć piszę GREP, prawie zawsze (chyba że jestem pewien, że dane nie są binarne) --Fiły binarne = tekst będzie dołączone. Po prostu zapewnia, że ​​jeśli dane wyglądają na binarne, a nawet czasami są binarne, Grep nadal będzie działać poprawnie. Zauważ, że jest to mniej troski o niektóre inne narzędzia, takie jak sed które wydają się domyślnie bardziej świadome/zdolne. Streszczenie; Zawsze używaj --Fiły binarne = tekst dla twoich poleceń GREP.

Podsumowując, stwierdziliśmy troskę o nasze badania; Liczba w pierwszym polu nie wydaje się, że wszystkie prace literackie wymienione na Wikipedii, nawet jeśli jest to podzbiór wszystkich danych, choć jest to możliwe.

To następnie podkreśla potrzebę procesu w przód i lęku, który często jest częścią munging dużych zbiorów danych (tak… inny termin!). Możemy nazywać to „mapowaniem dużych danych” i wprowadzić kolejny termin na mniej lub bardziej ten sam ogólny proces; Manipulowanie Big Data. Podsumowując, proces chodzenia między rzeczywymi danymi, narzędziami, z którymi pracujesz, a definicją danych, legenda lub składnia jest integralną częścią procesu manipulacji danymi.



Im lepiej rozumiemy nasze dane, tym lepiej sobie z tym poradzimy. W pewnym momencie krzywa uczenia się w kierunku nowych narzędzi stopniowo spada, a krzywa uczenia się w kierunku lepszego zrozumienia każdego nowego zestawu danych wzrasta. To jest punkt, w którym wiesz, że jesteś ekspertem od transformacji dużych zbiorów danych, ponieważ nie skupiasz się już na narzędziach - o których już znasz - ale na samych danych, co prowadzi do szybszych i lepszych wyników końcowych ogólnie!

W następnej części serii (z której jest to pierwszy artykuł), przyjrzymy się większej liczbie narzędzi, których można użyć do manipulacji dużymi zbiorami danych.

Możesz być również zainteresowany przeczytaniem naszych krótkich, półprzewodnikowych stron internetowych za pomocą artykułu Wget Curl i Lynx, który pokazuje, jak pobierać strony internetowe w formacie HTML i Text/TXT. Zawsze używaj tej wiedzy odpowiedzialnie (ja.mi. Nie przeciążaj serwerów i pobieraj tylko domenę publiczną, bez praw autorskich lub CC-0 itp. dane/strony) i zawsze sprawdź, czy istnieje baza danych/zestaw danych do pobrania danych, które Cię interesują, co jest bardzo preferowane od indywidualnego pobierania stron internetowych.

Wniosek

W tym pierwszym artykule z serii zdefiniowaliśmy manipulację Big Data, o ile odnosi się do naszej serii artykułów i odkryliśmy, dlaczego manipulacja Big Data może być zarówno zabawna, jak i satysfakcjonująca. Można na przykład wziąć - w obrębie odpowiednich granic prawnych! - duży zestaw danych tekstowych domeny publicznej i użyj narzędzi Bash, aby przekształcić go w pożądany format i opublikować ten sam online. Zaczęliśmy patrzeć na różne narzędzia Bash, które mogą być używane do manipulacji dużymi zbiorami danych i badaliśmy przykłady na podstawie publicznie dostępnej bazy danych Wikipedii.

Ciesz się podróżą, ale zawsze pamiętaj, że Big Data ma dwie strony; strona, w której masz kontrolę i… cóż… strona, w której dane są pod kontrolą. Utrzymuj cenny czas dla rodziny, przyjaciół i innych (31197816!), zanim zagubiłem się, analizując miriady dużych zbiorów danych!

Kiedy będziesz gotowy dowiedzieć się więcej, istnieje manipulacja Big Data dla zabawy i zysku Część 2.

Powiązane samouczki Linux:

  • Manipulacja Big Data dla zabawy i zysku Część 3
  • Manipulacja Big Data dla zabawy i zysku Część 2
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Zagnieżdżone pętle w skryptach Bash
  • Mastering Bash Script Loops
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Podstawy matematyki komputerowej: binarny, dziesiętny, sześciokadcica, ośmiorot
  • Ubuntu 20.04 sztuczki i rzeczy, których możesz nie wiedzieć