Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00287 004122 14816729 na godz. na dobę w sumie
Zwinna analiza danych. Apache Hadoop dla każdego - ebook/pdf
Zwinna analiza danych. Apache Hadoop dla każdego - ebook/pdf
Autor: Liczba stron: 184
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-9947-6 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> biznes it >> inne
Porównaj ceny (książka, ebook (-20%), audiobook).

Duże zbiory danych dla każdego!

W dobie Big Data klasyczne podejście do analizy danych nie przynosi już pożądanych wyników. Skuteczna analiza gigantycznych zbiorów informacji, wyciąganie interesujących wniosków i prezentowanie ich w przejrzystej formie użytkownikowi wymagają mnóstwa czasu i środków. Zastanawiasz się, jak podejść do tego problemu, by zminimalizować ryzyko niepowodzenia? Na to i wiele innych pytań odpowiada ta fantastyczna książka.

Dzięki niej dowiesz się, jak zaprząc platformę Hadoop do własnych celów. Skorzystasz z prostych narzędzi, takich jak język Python, biblioteka D3.js oraz Apache Pig, i zastosujesz zwinne podejście do problemu, by osiągnąć zaskakujące efekty. Ponadto przekonasz się, jak łatwo można publikować dane w MongoDB, stosować wyszukiwarkę ElasticSearch oraz wykorzystać potencjał chmur obliczeniowych. Nauczysz się także wizualizować dane na wykresach, prognozować oraz podejmować właściwe działania. Książka ta jest doskonałą lekturą dla wszystkich osób stojących przed problemem skutecznej pracy z ogromnymi zbiorami danych.

Dzięki tej książce:

Zwinnie rozwiąż problemy z dużymi zbiorami danych!

„Przy tak dużej popularności zagadnień Big Data i Data Science, lektura praktycznego instruktażu budowy aplikacji analitycznych jest mocno odświeżająca. Russel Jurney wprowadza nas, małymi porcjami implementacji, w swoją filozofię zwinności w dziedzinie analizy i aplikacyjnego wykorzystywania danych.”

Mat Kelcey, matpalm.com

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Agile Data Science: Building Data Analytics Applications with Hadoop Tłumaczenie: Przemysław Szeremiota ISBN: 978-83-246-9944-5 © 2015 Helion S.A. Authorized Polish translation of the English edition of Agile Data Science, ISBN 9781449326265 © 2014 Data Syndrome LLC. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie bierze jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Wydawnictwo HELION nie ponosi również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog siążek) Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/zwiand.zip Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/zwiand Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis tre(cid:316)ci Agile w Big Data Wielkie s(cid:228)owa Zespo(cid:228)y Rozpoznawanie problemów i szans Adaptowanie do zmian Proces wytwórczy w zwinnym Big Data Programowanie w parach i przegl(cid:241)d kodu (cid:263)rodowisko zwinnej pracy a produktywno(cid:264)(cid:232) Wst(cid:253)p ...............................................................................................7 Cz(cid:253)(cid:316)(cid:235) I Przygotowanie ........................................................11 1. Teoria ............................................................................................. 13 13 15 16 18 18 22 24 24 25 26 26 26 2. Dane ...............................................................................................29 29 30 30 31 31 37 38 39 40 Surowe wiadomo(cid:264)ci e-mail Dane ustrukturyzowane a dane na wpó(cid:228) ustrukturyzowane SQL NoSQL Serializacja Wyodr(cid:246)bnianie i ujawnianie cech w ewoluuj(cid:241)cym schemacie Potoki danych Przestrze(cid:254) wspó(cid:228)pracy Przestrze(cid:254) prywatna Przestrze(cid:254) osobista Pomys(cid:228)y na wielkoformatowych wydrukach E-mail Praca z surowymi danymi 3 Poleć książkęKup książkę Instalacja Publikowanie danych w MongoDB Perspektywy danych Sieci Szeregi czasowe J(cid:246)zyk naturalny Prawdopodobie(cid:254)stwo Podsumowanie Avro w Pythonie Zbieranie danych Przetwarzanie danych w Pigu Instalacja Instalowanie sterownika MongoDB dla Javy Instalowanie (cid:228)(cid:241)cznika mongo-hadoop Wypychanie danych z Piga do MongoDB Skalowalno(cid:264)(cid:232) = prostota Zwinne przetwarzanie w Big Data Konfigurowanie wirtualnego (cid:264)rodowiska dla j(cid:246)zyka Python Serializacja zdarze(cid:254) przez Avro 40 41 44 44 45 48 3. Narz(cid:253)dzia zwinno(cid:316)ci .....................................................................49 49 50 52 52 53 55 58 58 62 62 63 63 63 66 66 66 69 70 70 72 73 73 78 78 4. Do chmury! ..................................................................................... 81 81 83 84 85 87 Instalacja Bootstrap na start Wizualizacja danych: D3.js i nvd3.js Refleksja o kszta(cid:228)cie potoku przetwarzaj(cid:241)cego Lekkie aplikacje WWW Wyszukiwarka ElasticSearch Instalacja ElasticSearch i Pig — Wonderdog Podsumowanie Wprowadzenie GitHub DotCloud Python i Flask Prezentacja danych Pierwszy krok w dotCloud Procesy robocze w Pythonie 4 (cid:95) Spis tre(cid:316)ci Poleć książkęKup książkę Amazon Web Services Simple Storage Service Elastic MapReduce MongoDB w wydaniu us(cid:228)ugowym Monitorowanie Google Analytics Mortar Data 87 88 89 94 97 97 98 Kontrola zwinno(cid:264)ci Listy wiadomo(cid:264)ci Generowanie list wiadomo(cid:264)ci w MongoDB Anatomia prezentacji Przeszukiwanie wiadomo(cid:264)ci e-mail Podsumowanie Serwowanie wiadomo(cid:264)ci przez Flask i pymongo Renderowanie strony HTML5 z szablonów Jinja2 Monta(cid:276) ko(cid:254)cowy Pobieranie i serializowanie zawarto(cid:264)ci skrzynki pocztowej Przetwarzanie i publikowanie wiadomo(cid:264)ci e-mail Prezentowanie wiadomo(cid:264)ci w przegl(cid:241)darce Cz(cid:253)(cid:316)(cid:235) II W gór(cid:253) piramidy ....................................................101 5. Zbieranie i wy(cid:316)wietlanie rekordów ............................................ 105 106 107 108 110 110 111 115 116 116 119 124 124 125 126 6. Wizualizacja danych na wykresach ............................................ 129 130 130 131 135 141 7. Eksplorowanie danych w raportach ........................................... 143 144 147 152 158 Budowanie raportów z wieloma wykresami (cid:227)(cid:241)czenie rekordów Ekstrakcja s(cid:228)ów z wiadomo(cid:264)ci — TF-IDF Podsumowanie Indeksowanie wiadomo(cid:264)ci — Pig, ElasticSearch i Wonderdog Wyszukiwanie wiadomo(cid:264)ci z poziomu aplikacji WWW Dobre wykresy Wyodr(cid:246)bnianie encji: adresy e-mail Wyodr(cid:246)bnianie adresów Wizualizacja w przekroju czasowym Podsumowanie Spis tre(cid:316)ci (cid:95) 5 Poleć książkęKup książkę Przewidywanie wspó(cid:228)czynnika odpowiedzi na wiadomo(cid:264)ci Personalizacja Podsumowanie 8. Stawianie prognoz .......................................................................161 162 167 168 9. Ukierunkowywanie dzia(cid:293)a(cid:295) ........................................................ 169 170 W(cid:228)a(cid:264)ciwo(cid:264)ci skutecznych wiadomo(cid:264)ci e-mail 171 Lepsze przewidywanie — prosty predyktor bayesowski 171 P(reply|from to) 171 P(reply|token) 174 Predykcje w czasie rzeczywistym 177 Rejestrowanie zdarze(cid:254) w aplikacji Podsumowanie 179 Skorowidz .................................................................................... 180 6 (cid:95) Spis tre(cid:316)ci Poleć książkęKup książkę ROZDZIA(cid:292) 2. Dane W tym rozdziale zapoznamy si(cid:246) ze zbiorem danych, na którym b(cid:246)dziemy pracowa(cid:232) w dalszej cz(cid:246)(cid:264)ci ksi(cid:241)(cid:276)ki; b(cid:246)dzie to mianowicie nasza w(cid:228)asna skrzyn- ka odbiorcza poczty elektronicznej. Zapoznamy si(cid:246) te(cid:276) z szeregiem wyko- rzystywanych pó(cid:274)niej narz(cid:246)dzi i przedstawimy uzasadnienie dla takiego, a nie innego ich wyboru. Na koniec zakre(cid:264)limy perspektywy, które b(cid:246)dzie- my stosowa(cid:232) w analizie danych. Ksi(cid:241)(cid:276)ka zaczyna si(cid:246) od danych, bo w zwinnym Big Data nasz proces te(cid:276) zaczyna si(cid:246) od danych. Kto nie posiada konta pocztowego Gmail (http://mail.google.com), powinien je na potrzeby (cid:232)wicze(cid:254) za(cid:228)o(cid:276)y(cid:232) i zape(cid:228)ni(cid:232) przyk(cid:228)adowy- mi wiadomo(cid:264)ciami. E-mail Poczta elektroniczna, albo po prostu e-mail, to podstawowa us(cid:228)uga interne- tu. Jest nawet czym(cid:264) wi(cid:246)cej: powszechnym i podstawowym obecnie sposo- bem uwierzytelniania si(cid:246) w sieciach spo(cid:228)eczno(cid:264)ciowych i najró(cid:276)niejszych aplikacjach WWW. E-mail, mimo powszechno(cid:264)ci u(cid:276)ycia, jest us(cid:228)ug(cid:241) z(cid:228)o- (cid:276)on(cid:241), sygna(cid:228) zawarty w danych poczty jest bogaty i pozwala na skuteczn(cid:241) eksploracj(cid:246) rozmaitych cennych informacji. Jako zbiór danych dla aplikacji rozwijanej w toku kolejnych rozdzia(cid:228)ów po- stanowili(cid:264)my wybra(cid:232) osobist(cid:241) skrzynk(cid:246) pocztow(cid:241), poniewa(cid:276) w ten sposób dane staj(cid:241) si(cid:246) istotne i cenne dla czytelnika. Pobieraj(cid:241)c zawarto(cid:264)(cid:232) skrzynki odbiorczej Gmail i u(cid:276)ywaj(cid:241)c jej w przyk(cid:228)adach, natychmiast stajemy przed 29 Poleć książkęKup książkę „du(cid:276)ym” (chocia(cid:276) w(cid:228)a(cid:264)ciwie to „(cid:264)rednim”) problemem przetwarzania da- nych: przetwarzanie danych wiadomo(cid:264)ci e-mail na w(cid:228)asnym komputerze ledwo daje si(cid:246) przeprowadzi(cid:232). Dane s(cid:241) przewa(cid:276)nie za du(cid:276)e, (cid:276)eby zmie(cid:264)ci(cid:232) si(cid:246) w ca(cid:228)o(cid:264)ci w pami(cid:246)ci, wi(cid:246)c wymuszaj(cid:241) stosowanie skalowalnych narz(cid:246)- dzi (co pasuje do ducha zwinnego Big Data). Dalej, poniewa(cid:276) b(cid:246)dzie to na- sza w(cid:228)asna skrzynka, zyskamy istotne informacje ze (cid:264)wiata bezpo(cid:264)rednio nas dotycz(cid:241)cego, co pozwoli na uwypuklenie warto(cid:264)ci tkwi(cid:241)cej w tego ro- dzaju danych! W ksi(cid:241)(cid:276)ce b(cid:246)dziemy odwo(cid:228)ywa(cid:232) si(cid:246) do tych samych narz(cid:246)dzi, których u(cid:276)y- liby(cid:264)my do przetwarzania danych w skali petabajtowej, tyle (cid:276)e b(cid:246)dziemy je uruchamia(cid:232) na w(cid:228)asnym komputerze w trybie pracy lokalnej. W ten spo- sób nie tylko zapewnimy sobie efektywne przetwarzanie danych, ale te(cid:276) spe(cid:228)nimy postulat jednokrotnej budowy rozwi(cid:241)zania gotowego do u(cid:276)ycia na wi(cid:246)ksz(cid:241) skal(cid:246). Zwinno(cid:264)(cid:232) wymaga, aby wszystko, co robimy, by(cid:228)o te(cid:276) mo(cid:276)liwie proste. Praca z surowymi danymi Surowe wiadomo(cid:316)ci e-mail Format wiadomo(cid:264)ci poczty elektronicznej jest rygorystycznie zdefiniowany w dokumencie RFC 5322 (Request For Comments, dokumenty stowarzysze- nia Internet Engineering Task Force). Aby obejrze(cid:232) surow(cid:241) posta(cid:232) wiado- mo(cid:264)ci e-mail w serwisie Gmail, nale(cid:276)y wybra(cid:232) wiadomo(cid:264)(cid:232) i z menu znaj- duj(cid:241)cego si(cid:246) w prawym górnym naro(cid:276)niku wybra(cid:232) opcj(cid:246) „Poka(cid:276) orygina(cid:228)” (rysunek 2.1). Rysunek 2.1. Opcja „Poka(cid:276) orygina(cid:228)” w Gmailu Surowa wiadomo(cid:264)(cid:232) e-mail wygl(cid:241)da tak: From: Russell Jurney russell.jurney@gmail.com Mime-Version: 1.0 (1.0) 30 (cid:95) Rozdzia(cid:293) 2. Dane Poleć książkęKup książkę Date: Mon, 28 Nov 2011 14:57:38 -0800 Delivered-To: russell.jurney@gmail.com Message-ID: 4484555894252760987@unknownmsgid Subject: Re: Lawn To: William Jurney ******@hotmail.com Content-Type: text/plain; charset=ISO-8859-1 Dad, get a sack of Rye grass seed and plant it over there now. It will build up a nice turf over the winter, then die off when it warms up. Making for good topsoil you can plant regular grass in. Will keep the weeds from taking over. Russell Jurney datasyndrome.com Tak(cid:241) posta(cid:232) danych nazwiemy za pomoc(cid:241) okre(cid:264)lenia dane na wpó(cid:228) ustruk- turyzowane (ang. semi-structured data). Dane ustrukturyzowane a dane na wpó(cid:293) ustrukturyzowane Wikipedia definiuje dane na wpó(cid:228) ustrukturyzowane jako: Form(cid:246) danych ustrukturyzowanych, która nie spe(cid:228)nia formalnej struktury tabeli i modeli typowych dla relacyjnych baz danych, ale mimo to zawiera etykiety albo inne znaczniki oddzielaj(cid:241)ce elementy semantyczne i narzucaj(cid:241)ce hierarchi(cid:246) rekordów i pól wyodr(cid:246)bnionych w danych. Taka definicja stoi w jawnej sprzeczno(cid:264)ci z danymi ustrukturyzowanymi, w których informacja jest wt(cid:228)oczona w (cid:264)ci(cid:264)le zdefiniowane schematy, jesz- cze zanim zaczniemy jej analiz(cid:246), a schemat jest optymalizowany do pó(cid:274)niej- szego wy(cid:228)uskiwania danych. Ustrukturyzowan(cid:241) perspektyw(cid:246) wiadomo(cid:264)ci e-mail dobrze ilustruje zbiór danych Berkeley Enron autorstwa Andrew Fio- rego i Jeffa Heera, widoczny na rysunku 2.2. SQL Do odpytywania ustrukturyzowanych danych w schematach relacyjnych tradycyjnie wykorzystujemy deklaratywne j(cid:246)zyki programowania, takie jak SQL. W j(cid:246)zyku SQL okre(cid:264)lamy raczej to, co chcemy zrobi(cid:232), a nie jak to zrobi(cid:232). To zasadnicza ró(cid:276)nica wobec programowania imperatywnego. W SQL-u okre(cid:264)lamy po(cid:276)(cid:241)dany wynik operacji, a nie algorytm okre(cid:264)laj(cid:241)cy przebieg operacji. Zapytanie SQL wykonane wobec zbioru relacyjnego Enron w celu wydobycia pojedynczej, kompletnej wiadomo(cid:264)ci e-mail wygl(cid:241)da(cid:228)oby tak: Praca z surowymi danymi (cid:95) 31 Poleć książkęKup książkę Rysunek 2.2. Schemat wiadomo(cid:264)ci poczty elektronicznej Berkeley Enron select m.smtpid as id, m.messagedt as date, s.email as sender, (select GROUP_CONCAT(CONCAT(r.reciptype, : , p.email) SEPARATOR ) from recipients r join people p on r.personid=p.personid where r.messageid = 511) as to_cc_bcc, m.subject as subject, 32 (cid:95) Rozdzia(cid:293) 2. Dane Poleć książkęKup książkę SUBSTR(b.body, 1, 200) as body from messages m join people s on m.senderid=s.personid join bodies b on m.messageid=b.messageid where m.messageid=511; | 25772535.1075839951307.JavaMail.evans@thyme | 2002-02-02 12:56:33 | pete.davis@enron.com | to:pete.davis@enron.com cc:albert.meyers@enron.com cc:bill.williams@enron.com cc:craig.dean@enron.com cc:geir.solberg@enron.com cc:john.anderson@enron.com cc:mark.guzman@enron.com cc:michael.mier@enron.com cc:pete.davis@enron.com cc:ryan.slinger@enron.com bcc:albert.meyers@enron.com bcc:bill.williams@enron.com bcc:craig.dean@enron.com bcc:geir.solberg@enron.com bcc:john.anderson@enron.com bcc:mark.guzman@enron.com bcc:michael.mier@enron.com bcc:pete.davis@enron.com bcc:ryan.slinger@enron.com | Schedule Crawler: HourAhead Failure | Start Date: 2/2/02; HourAhead hour: 11; HourAhead schedule download failed. Manual intervention required. | Zauwa(cid:276)my, jak bardzo skomplikowane jest zapytanie wy(cid:228)uskuj(cid:241)ce z tak ustrukturyzowanych danych pojedynczy, podstawowy rekord. Musimy (cid:228)(cid:241)- czy(cid:232) ró(cid:276)ne tabele i u(cid:276)ywa(cid:232) podzapyta(cid:254), specjalnej funkcji MySQL-a o nazwie GROUP_CONCAT, a tak(cid:276)e troch(cid:246) bardziej typowych funkcji — CONCAT i SUBSTR. Dane relacyjne niemal zawsze zniech(cid:246)caj(cid:241) do przyjmowania pierwotnej perspektywy danych, przymuszaj(cid:241)c do postrzegania danych w uj(cid:246)ciu re- lacyjnym, a nie w uj(cid:246)ciu samej zawarto(cid:264)ci pierwotnych danych, które maj(cid:241) posta(cid:232) zupe(cid:228)nie zdenormalizowan(cid:241). Z(cid:228)o(cid:276)ono(cid:264)(cid:232) ta wp(cid:228)ywa na ka(cid:276)d(cid:241) analiz(cid:246), automatycznie przenosz(cid:241)c nas do „krainy SQL” zamiast do rzeczywisto(cid:264)ci konkretnych dokumentów. Zauwa(cid:276)my te(cid:276), (cid:276)e samo zdefiniowanie schematu równie(cid:276) nie jest trywialne: CREATE TABLE bodies ( messageid int(10) unsigned NOT NULL default 0 , body text, PRIMARY KEY (messageid) ) TYPE=MyISAM; CREATE TABLE categories ( categoryid int(10) unsigned NOT NULL auto_increment, categoryname varchar(255) default NULL, categorygroup int(10) unsigned default NULL, grouporder int(10) unsigned default NULL, PRIMARY KEY (categoryid), KEY categories_categorygroup (categorygroup) Praca z surowymi danymi (cid:95) 33 Poleć książkęKup książkę ) TYPE=MyISAM; CREATE TABLE catgroups ( catgroupid int(10) unsigned NOT NULL default 0 , catgroupname varchar(255) default NULL, PRIMARY KEY (catgroupid) ) TYPE=MyISAM; CREATE TABLE edgemap ( senderid int(10) unsigned default NULL, recipientid int(10) unsigned default NULL, messageid int(10) unsigned default NULL, messagedt timestamp(14) NOT NULL, reciptype enum( bcc , cc , to ) default NULL, subject varchar(255) default NULL, KEY senderid (senderid,recipientid), KEY messageid (messageid), KEY messagedt (messagedt), KEY senderid_2 (senderid), KEY recipientid (recipientid) ) TYPE=MyISAM; CREATE TABLE edges ( senderid int(10) unsigned default NULL, recipientid int(10) unsigned default NULL, total int(10) unsigned NOT NULL default 0 , base int(10) unsigned NOT NULL default 0 , cat01 int(10) unsigned NOT NULL default 0 , cat02 int(10) unsigned NOT NULL default 0 , cat03 int(10) unsigned NOT NULL default 0 , cat04 int(10) unsigned NOT NULL default 0 , cat05 int(10) unsigned NOT NULL default 0 , cat06 int(10) unsigned NOT NULL default 0 , cat07 int(10) unsigned NOT NULL default 0 , cat08 int(10) unsigned NOT NULL default 0 , cat09 int(10) unsigned NOT NULL default 0 , cat10 int(10) unsigned NOT NULL default 0 , cat11 int(10) unsigned NOT NULL default 0 , cat12 int(10) unsigned NOT NULL default 0 , cat13 int(10) unsigned NOT NULL default 0 , UNIQUE KEY senderid (senderid,recipientid) ) TYPE=MyISAM; CREATE TABLE headers ( headerid int(10) unsigned NOT NULL auto_increment, messageid int(10) unsigned default NULL, headername varchar(255) default NULL, headervalue text, PRIMARY KEY (headerid), KEY headers_headername (headername), KEY headers_messageid (messageid) ) TYPE=MyISAM; 34 (cid:95) Rozdzia(cid:293) 2. Dane Poleć książkęKup książkę CREATE TABLE messages ( messageid int(10) unsigned NOT NULL auto_increment, smtpid varchar(255) default NULL, messagedt timestamp(14) NOT NULL, messagetz varchar(20) default NULL, senderid int(10) unsigned default NULL, subject varchar(255) default NULL, PRIMARY KEY (messageid), UNIQUE KEY smtpid (smtpid), KEY messages_senderid (senderid), KEY messages_subject (subject) ) TYPE=MyISAM; CREATE TABLE people ( personid int(10) unsigned NOT NULL auto_increment, email varchar(255) default NULL, name varchar(255) default NULL, title varchar(255) default NULL, enron tinyint(3) unsigned default NULL, msgsent int(10) unsigned default NULL, msgrec int(10) unsigned default NULL, PRIMARY KEY (personid), UNIQUE KEY email (email) ) TYPE=MyISAM; -- -- CREATE TABLE recipients ( recipientid int(10) unsigned NOT NULL auto_increment, messageid int(10) unsigned default NULL, reciptype enum( bcc , cc , to ) default NULL, reciporder int(10) unsigned default NULL, personid int(10) unsigned default NULL, PRIMARY KEY (recipientid), KEY messageid (messageid) ) TYPE=MyISAM; Dla porównania — w zwinnym Big Data do definiowania postaci danych korzystamy z j(cid:246)zyków przep(cid:228)ywu danych, a potem publikujemy dane wprost w bazie dokumentowej, nawet bez uprzedniego okre(cid:264)lania schematu! To podej(cid:264)cie optymalizowane dla naszego procesu, czyli dla analizy danych, w której to analizie naszym zadaniem jest wyci(cid:241)gni(cid:246)cie na podstawie po- siadanych danych nowych informacji. Zewn(cid:246)trzne narzucanie schematu da- nych nie daje tu (cid:276)adnych korzy(cid:264)ci i stanowi czysty narzut. W ko(cid:254)cu prze- cie(cid:276) nie wiemy nawet, jak dok(cid:228)adnie b(cid:246)dziemy z tych danych korzysta(cid:232)! Badania danych zawsze przynosz(cid:241) niespodzianki. Mimo to relacyjna struktura ma swoje zalety; mo(cid:276)emy na przyk(cid:228)ad (cid:228)atwo sprawdzi(cid:232), w których godzinach u(cid:276)ytkownik wysy(cid:228)a wiadomo(cid:264)ci, za po- moc(cid:241) prostego zapytania grupuj(cid:241)cego i sortuj(cid:241)cego: Praca z surowymi danymi (cid:95) 35 Poleć książkęKup książkę select senderid as id, hour(messagedt) as sent_hour, count(*) from messages where senderid=511 group by senderid, m_hour order by senderid, m_hour; Zapytanie to zwróci poni(cid:276)sz(cid:241) prost(cid:241) tabelk(cid:246): +----------+--------+----------+ | senderid | m_hour | count(*) | +----------+--------+----------+ | 1 | 0 | 4 | | 1 | 1 | 3 | | 1 | 3 | 2 | | 1 | 5 | 1 | | 1 | 8 | 3 | | 1 | 9 | 1 | | 1 | 10 | 5 | | 1 | 11 | 2 | | 1 | 12 | 2 | | 1 | 14 | 1 | | 1 | 15 | 5 | | 1 | 16 | 4 | | 1 | 17 | 1 | | 1 | 19 | 1 | | 1 | 20 | 1 | | 1 | 21 | 1 | | 1 | 22 | 1 | | 1 | 23 | 1 | +----------+--------+----------+ Relacyjne bazy danych dziel(cid:241) dane na tabele, zgodnie z okre(cid:264)lon(cid:241) struktur(cid:241) relacji, i wst(cid:246)pnie obliczaj(cid:241) indeksy potrzebne do (cid:228)(cid:241)czenia danych z tych ta- bel. Indeksy pozwalaj(cid:241) tym systemom osi(cid:241)gn(cid:241)(cid:232) du(cid:276)(cid:241) szybko(cid:264)(cid:232) odpowiedzi z wykorzystaniem pojedynczej maszyny. Do odpytywania o dane w takiej strukturze stosuje si(cid:246) programowanie deklaratywne. Tego rodzaju programowanie (cid:264)wietnie nadaje si(cid:246) do konsumowania i prze- szukiwania ustrukturyzowanych danych w agregatach, dzi(cid:246)ki czemu mo(cid:276)na (cid:228)atwo generowa(cid:232) proste wykresy i diagramy. Kiedy ju(cid:276) dok(cid:228)adnie wiado- mo, co jest w danych i co nas z tego interesuje, mo(cid:276)emy efektywnie wyste- rowa(cid:232) mechanizm SQL, który za nas wyznaczy i pobierze odpowiednie zbiory danych (cid:228)(cid:241)czonych w relacje. Nie musimy zajmowa(cid:232) si(cid:246) szczegó(cid:228)ami samego sposobu wykonania zapytania. 36 (cid:95) Rozdzia(cid:293) 2. Dane Poleć książkęKup książkę NoSQL Inaczej ni(cid:276) w SQL-u, kiedy budujemy aplikacje analityczne, cz(cid:246)sto nie wie- my jeszcze, jakie zapytania b(cid:246)dziemy w nich wykonywa(cid:232), to znaczy, jakie przekroje i agregaty danych b(cid:246)d(cid:241) nas interesowa(cid:232). Wypracowanie rozwi(cid:241)- zania wymaga wielu iteracji implementacji i eksperymentów. Dane s(cid:241) cz(cid:246)- sto niedost(cid:246)pne w formacie relacyjnym: dane przenikaj(cid:241)ce (cid:264)wiat rzeczywisty rzadko s(cid:241) znormalizowane, raczej zaszumione i rozmyte. Samo wyodr(cid:246)b- nienie ich struktury bywa d(cid:228)ugotrwa(cid:228)ym procesem, który wykonujemy ite- racyjnie, w miar(cid:246) dostrzegania i wy(cid:228)uskiwania kolejnych cech danych. Z tych powodów w zwinnym Big Data stosujemy przede wszystkim pro- gramowanie imperatywne, implementowane w systemach rozproszonych. J(cid:246)zyki imperatywne, takie jak Pig Latin, opisuj(cid:241) czynno(cid:264)ci potrzebne do ma- nipulowania danymi przetwarzanymi potokowo. Zamiast oblicza(cid:232) indeksy rekordów posiadaj(cid:241)cych ustalon(cid:241) struktur(cid:246), do wy(cid:228)uskiwania pojedynczych rekordów u(cid:276)ywamy wielu wspó(cid:228)bie(cid:276)nie dzia(cid:228)aj(cid:241)cych procesów. Ca(cid:228)y ten przep(cid:228)yw danych jest mo(cid:276)liwy dzi(cid:246)ki narz(cid:246)dziom takim jak Hadoop i ko- lejki zada(cid:254) (ang. work queue). J(cid:246)zyki imperatywne nie tylko dobrze przek(cid:228)adaj(cid:241) si(cid:246) na model pracy w tech- nologiach w rodzaju Hadoop (co pozwala na (cid:228)atwe skalowanie przetwarza- nia), ale te(cid:276) k(cid:228)ad(cid:241) nacisk na te obszary aplikacji analitycznych, w których odbywa si(cid:246) najwi(cid:246)cej przetwarzania: b(cid:246)dzie to jedna czy dwie kluczowe operacje, w których b(cid:246)dziemy wytwarza(cid:232) gros warto(cid:264)ci naszej aplikacji. Wypracowanie tych najbardziej cennych operacji przetwarzaj(cid:241)cych jest — w porównaniu do pisania zapyta(cid:254) SQL — procesem d(cid:228)ugotrwa(cid:228)ym i cz(cid:246)- sto (cid:276)mudnym, poniewa(cid:276) nasze przetwarzanie mo(cid:276)e anga(cid:276)owa(cid:232) techniki z dziedzin statystyki, uczenia maszynowego czy analizy sieci spo(cid:228)ecznych. Programowanie imperatywne jest wtedy jedyn(cid:241) mo(cid:276)liwo(cid:264)ci(cid:241). Podsumowuj(cid:241)c, kiedy schematy s(cid:241) (cid:264)ci(cid:264)le okre(cid:264)lone, a do dyspozycji mamy tylko SQL, nasze postrzeganie danych jest zdominowane przez dost(cid:246)pno(cid:264)(cid:232) narz(cid:246)dzi optymalizowanych do konsumpcji gotowych relacji, a nie do wy- szukiwania nowych przez eksploracj(cid:246) surowych danych. Sztywne schema- ty s(cid:241) wtedy przeszkod(cid:241), blokuj(cid:241)c mo(cid:276)liwo(cid:264)(cid:232) intuicyjnego (cid:228)(cid:241)czenia aspek- tów danych. Z kolei praca z danymi nieustrukturyzowanymi pozwala na skupienie si(cid:246) wprost na danych, iteracyjne wy(cid:228)uskiwanie warto(cid:264)ci i prze- kszta(cid:228)canie ich w produkt. W Big Data, je(cid:264)li chcemy zachowa(cid:232) zwinno(cid:264)(cid:232), u(cid:276)yjemy technik NoSQL. NoSQL (cid:95) 37 Poleć książkęKup książkę Serializacja Z naszymi danymi wpó(cid:228)ustrukturyzowanymi mogliby(cid:264)my pracowa(cid:232) wprost, operuj(cid:241)c na czystym tek(cid:264)cie, ale pomocne b(cid:246)dzie narzucenie im chocia(cid:276) naj- lu(cid:274)niejszej z mo(cid:276)liwych struktury. Mo(cid:276)liwo(cid:264)(cid:232) t(cid:246) daj(cid:241) nam systemy seriali- zacji danych, takie jak: Thrift: http://thrift.apache.org/ Protobuf: http://code.google.com/p/protobuf/ Avro: http://avro.apache.org/ Na potrzeby omówienia wybierzemy Avro, mimo (cid:276)e jest to mechanizm naj- mniej dojrza(cid:228)y i uznany z wymienionych. Avro pozwala na serializowanie nawet z(cid:228)o(cid:276)onych struktur danych, do ka(cid:276)dego pliku zserializowanych da- nych do(cid:228)(cid:241)cza ich schemat, a ponadto jest obs(cid:228)ugiwany w Apache Pig. Instalacja Avro jest prosta, a samo oprogramowanie nie wymaga odwo(cid:228)y- wania si(cid:246) do zewn(cid:246)trznych us(cid:228)ug. Zdefiniujemy sobie teraz prosty schemat Avro odpowiedni dla wiadomo(cid:264)ci e-mail zgodnych z definicj(cid:241) z RFC 5322. Dobrze jest mie(cid:232) zawczasu ustalo- ny schemat, cho(cid:232) w praktyce zwinnego Big Data wi(cid:246)kszo(cid:264)(cid:232) operacji prze- twarzaj(cid:241)cych i tak b(cid:246)dzie musia(cid:228)a wyodr(cid:246)bnia(cid:232) i przetwarza(cid:232) wszystkie encje tego schematu. Dlatego pierwotny schemat mo(cid:276)e równie dobrze by(cid:232) mocno uproszczony, jak tutaj: { type : record , name : RawEmail , fields : [ { name : thread_id , type :[ string , null ], doc : }, { name : raw_email , type : [ string , null ] } ] } Schemat mogliby(cid:264)my upro(cid:264)ci(cid:232) jeszcze bardziej: wyodr(cid:246)bni(cid:232) jedynie thread_ id jako unikatowy identyfikator wiadomo(cid:264)ci, a reszt(cid:246) jej tre(cid:264)ci umie(cid:264)ci(cid:232) w pojedynczym polu surowych danych. Je(cid:264)li z surowych rekordów trudno wyodr(cid:246)bni(cid:232) jednoznaczny i unikatowy identyfikator rekordów, mo(cid:276)emy 38 (cid:95) Rozdzia(cid:293) 2. Dane Poleć książkęKup książkę zewn(cid:246)trznie nadawa(cid:232) rekordom identyfikatory UUID (Universally Unique IDentifier) i dok(cid:228)ada(cid:232) je w osobnym polu. W toku przetwarzania danych naszym zadaniem jest dodawanie pól do schematu w miar(cid:246) wyodr(cid:246)bniania kolejnych interesuj(cid:241)cych aspektów po- szczególnych rekordów, przy jednoczesnym zachowaniu surowych danych (cid:274)ród(cid:228)owych w osobnym polu (je(cid:264)li tylko mo(cid:276)emy sobie na to pozwoli(cid:232)); wtedy w kolejnych etapach przetwarzania wci(cid:241)(cid:276) b(cid:246)dzie mo(cid:276)na odwo(cid:228)a(cid:232) si(cid:246) do nieprzetworzonego (cid:274)ród(cid:228)a danych. Wyodr(cid:253)bnianie i ujawnianie cech w ewoluuj(cid:233)cym schemacie Pete Warden w swojej prezentacji „Embracing the Chaos of Data” (http://bit. ly/171lulz7) zauwa(cid:276)y(cid:228), (cid:276)e wi(cid:246)kszo(cid:264)(cid:232) dost(cid:246)pnych dla nas danych to dane nie- ustrukturyzowane i nieoczyszczone. Dost(cid:246)pno(cid:264)(cid:232) olbrzymich ilo(cid:264)ci takich w(cid:228)a(cid:264)nie danych, nieprzygotowanych nijak do umieszczania w znormalizo- wanych tabelach, to synonim i sedno „big data”. To równocze(cid:264)nie szansa wyekstrahowania z surowych i nieoczyszczonych danych istotnych informacji i wykorzystania tych informacji jako bazy do kolejnych, nowych operacji. Cechy wyodr(cid:246)bniane z nieustrukturyzowanych danych s(cid:241) oczyszczane wy- (cid:228)(cid:241)cznie w pe(cid:228)nym (cid:264)wietle dziennym, to znaczy, kiedy trafiaj(cid:241) do konsumu- j(cid:241)cych je u(cid:276)ytkowników, a ci zg(cid:228)aszaj(cid:241) pretensje i uwagi; je(cid:264)li nie mo(cid:276)emy publikowa(cid:232) cech danych w miar(cid:246) ich wyodr(cid:246)bniania, nasz produkt nie b(cid:246)- dzie si(cid:246) rozwija(cid:228). Najtrudniejszym elementem budowania produktów opar- tych na danych jest dodawanie ekstrakcji encji i cech do produktów jeszcze znacznie mniejszych ni(cid:276) w docelowej wizji. Dlatego schemat powinien roz- poczyna(cid:232) si(cid:246) jako wór z nieustrukturyzowanym tekstem i dopiero stopnio- wo ewoluowa(cid:232) do danych ustrukturyzowanych, w miar(cid:246) wyodr(cid:246)bniania istotnych cech. Cechy te musz(cid:241) by(cid:232) eksponowane w jakiej(cid:264) formie produktowej, inaczej nigdy nie osi(cid:241)gn(cid:241) stanu gotowo(cid:264)ci produkcyjnej. Wypreparowane dane, które trzymamy w niedost(cid:246)pnych piwnicach naszego produktu, raczej nie maj(cid:241) szansy na docelowe ukszta(cid:228)towanie, bo nie ma takiej presji. Dlatego lepiej od razu wszystkie wyodr(cid:246)bniane cechy danych ujawnia(cid:232) na stronach encji w aplikacji, w postaci gotowej do konsumpcji i stopniowego ulepszania. Aplikacja mo(cid:276)e stopniowo uwidacznia(cid:232) agregaty i kombinacje tych encji; efekt b(cid:246)dzie na pewno lepszy ni(cid:276) w przypadku próby uwidocznienia wszyst- kich cech, które przychodz(cid:241) nam do g(cid:228)owy jeszcze przed ich ujawnieniem NoSQL (cid:95) 39 Poleć książkęKup książkę w danych (bo w danych zawarte s(cid:241) nieodzownie równie(cid:276) takie informacje, których obecno(cid:264)(cid:232) nie by(cid:228)a oczywista). Podczas eksploracji danych do postaci ustrukturyzowanej informacji u(cid:276)y- wamy tej informacji do ujawniania nowych faktów i stawiania prognoz; to sprz(cid:246)(cid:276)enie stanowi gigantyczny potencja(cid:228) w zakresie wytwarzania rzeczy- wistej warto(cid:264)ci aplikacji. Dane s(cid:241) brutalne i nieobliczalne; zignorowanie ich prawdziwej, ujawniaj(cid:241)cej si(cid:246) stopniowo natury zniweczy marzenia nawet najbardziej ambitnych mened(cid:276)erów produktu. W ksi(cid:241)(cid:276)ce przekonamy si(cid:246) niejednokrotnie, (cid:276)e ewolucja i ulepszanie sche- matu danych odbywa si(cid:246) wraz z ujawnianiem nowych cech tych danych. A prawdziw(cid:241) zwinno(cid:264)(cid:232) osi(cid:241)gamy wtedy, kiedy ewolucja schematu odbywa si(cid:246) równolegle. Potoki danych B(cid:246)dziemy pracowa(cid:232) z na wpó(cid:228) ustrukturyzowanymi danymi przesy(cid:228)anymi w potokach danych, w których b(cid:246)dziemy wypreparowywa(cid:232) i prezentowa(cid:232) poszczególne wykryte cechy danych. Zalet(cid:241) takiego modelu pracy z dany- mi jest brak inwestycji czasowej w wyodr(cid:246)bnianie struktury dopóty, do- póki nie oka(cid:276)e si(cid:246) ona interesuj(cid:241)ca i przydatna. Zgodnie z zasadami KISS (Keep It Simple, Stupid!) i YAGNI (You Ain’t Gonna Need It) opó(cid:274)niamy ten narzut do momentu, w którym oka(cid:276)e si(cid:246) niezb(cid:246)dny. Dzi(cid:246)ki wykorzysty- wanym narz(cid:246)dziom b(cid:246)dzie to równie(cid:276) podej(cid:264)cie bardziej efektywne, o czym przekonamy si(cid:246) w rozdziale 3. Na rysunku 2.3 wida(cid:232) schemat wieloetapowego potoku danych obliczaj(cid:241)- cego liczb(cid:246) wiadomo(cid:264)ci wys(cid:228)anych pomi(cid:246)dzy dwoma adresami e-mail. Na pierwszy rzut oka przep(cid:228)yw danych wydaje si(cid:246) skomplikowany, zw(cid:228)asz- cza w porównaniu z SQL-em, ale szybko przekonamy si(cid:246), (cid:276)e ten model pra- cy jest prostszy, a przetwarzanie danych w potokach stanie si(cid:246) nasz(cid:241) dru- g(cid:241) natur(cid:241). Perspektywy danych Na dobry pocz(cid:241)tek warto zapozna(cid:232) si(cid:246) z ró(cid:276)nymi sposobami postrzegania danych o wiadomo(cid:264)ciach e-mail. W zwinnym Big Data stosujemy zró(cid:276)ni- cowane perspektywy i wielorakie tryby eksploracji danych mi(cid:246)dzy innymi dlatego, (cid:276)e przyj(cid:246)cie jednej perspektywy cz(cid:246)sto ko(cid:254)czy si(cid:246) wyczerpaniem kreatywno(cid:264)ci eksploracji danych i ograniczeniem si(cid:246) do jednego czy dwóch 40 (cid:95) Rozdzia(cid:293) 2. Dane Poleć książkęKup książkę Rysunek 2.3. Prosty przep(cid:228)yw danych ze zliczaniem liczby wiadomo(cid:264)ci przes(cid:228)anych pomi(cid:246)dzy par(cid:241) kont poczty elektronicznej sposobów, które wcze(cid:264)niej okaza(cid:228)y si(cid:246) skuteczne. Potem przyjrzymy si(cid:246) bli(cid:276)ej ró(cid:276)nym perspektywom wiadomo(cid:264)ci e-mail — b(cid:246)dziemy je stosowa(cid:232) w dalszym omówieniu. Sieci Sie(cid:232) spo(cid:228)eczna to grupa osób (ego) i po(cid:228)(cid:241)czenia pomi(cid:246)dzy nimi. Po(cid:228)(cid:241)czenia te mog(cid:241) by(cid:232) skierowane, na przyk(cid:228)ad kiedy mówimy, (cid:276)e „Bob zna Alicj(cid:246)”; Perspektywy danych (cid:95) 41 Poleć książkęKup książkę mog(cid:241) by(cid:232) te(cid:276) nieskierowane: „Bob i Alicja s(cid:241) przyjació(cid:228)mi”. Po(cid:228)(cid:241)czenia mog(cid:241) równie(cid:276) mie(cid:232) przypisane si(cid:228)y albo inaczej wagi: „Bob dobrze zna Alicj(cid:246)” (z wag(cid:241) na przyk(cid:228)ad w skali od 1 do 10) czy te(cid:276) „Bob i Alicja s(cid:241) ma(cid:228)(cid:276)e(cid:254)- stwem” (w skali od 0 do 1). Do utworzenia sieci spo(cid:228)ecznej mo(cid:276)na u(cid:276)y(cid:232) nadawców i odbiorców wiado- mo(cid:264)ci e-mail z pól from, to, cc i bcc. Na przyk(cid:228)ad poni(cid:276)sza wiadomo(cid:264)(cid:232) de- finiuje dwie encje: russell.jurney@gmail.com oraz ******@hotmail.com: From: Russell Jurney russell.jurney@gmail.com To: ******* Jurney ******@hotmail.com Wiadomo(cid:264)(cid:232) sama w sobie implikuje powi(cid:241)zanie pomi(cid:246)dzy tymi encjami. Mo- (cid:276)emy je wtedy reprezentowa(cid:232) w prostej sieci spo(cid:228)ecznej, jak na rysunku 2.4. Rysunek 2.4. Diady sieci spo(cid:228)ecznej Na rysunku 2.5 mamy przyk(cid:228)ad nieco bardziej rozbudowanej sieci spo(cid:228)ecznej. Rysunek 2.5. Sie(cid:232) spo(cid:228)eczna Na rysunku 2.6 wida(cid:232) przyk(cid:228)ad sieci spo(cid:228)ecznej zbudowanej z 200-megabaj- towej próbki wiadomo(cid:264)ci e-mail z Enrona. Analiza sieci spo(cid:228)ecznych, w skrócie SNA (od Social Network Analysis), to metoda naukowego badania i analizy sieci spo(cid:228)ecznych. Modeluj(cid:241)c swoj(cid:241) skrzynk(cid:246) odbiorcz(cid:241) jako sie(cid:232) spo(cid:228)eczn(cid:241), mo(cid:276)emy korzysta(cid:232) z metod SNA (np. z algorytmu PageRank) do wyekstrahowania g(cid:228)(cid:246)bszej wiedzy o danych i tym samym o naszej osobistej sieci spo(cid:228)ecznej. Tego rodzaju analiz(cid:246), prze- prowadzon(cid:241) dla sieci Enron, wida(cid:232) na rysunku 2.7. 42 (cid:95) Rozdzia(cid:293) 2. Dane Poleć książkęKup książkę Rysunek 2.6. Sie(cid:232) spo(cid:228)eczna Enron wizualizowana w Enron Corpus Viewer (Jeffrey Heer i Andrew Fiore) Rysunek 2.7. Enron SocialRank (Jaime Montemayor, Chris Diehl, Mike Pekala i David Patrone) Perspektywy danych (cid:95) 43 Poleć książkęKup książkę Szeregi czasowe Szereg czasowy to sekwencja punktów danych uporz(cid:241)dkowana wed(cid:228)ug znacznika czasowego, zarejestrowanego wraz z ka(cid:276)d(cid:241) warto(cid:264)ci(cid:241). Szeregi czasowe pozwalaj(cid:241) na obserwowanie zmian i trendów w danych, ujawnia- j(cid:241)cych si(cid:246) z up(cid:228)ywem czasu. Wszystkie wiadomo(cid:264)ci e-mail maj(cid:241) znaczniki czasowe, co pozwala reprezentowa(cid:232) poszczególne wiadomo(cid:264)ci w szeregach czasowych, jak pokazano na rysunku 2.8: Date: Mon, 28 Nov 2011 14:57:38 -0800 Rysunek 2.8. Surowe szeregi czasowe Dysponuj(cid:241)c wi(cid:246)ksz(cid:241) próbk(cid:241) wiadomo(cid:264)ci, mo(cid:276)emy skutecznie wyrysowa(cid:232) surowe dane wiadomo(cid:264)ci w szeregach czasowych. Poniewa(cid:276) tutaj nie analizujemy dodatkowych warto(cid:264)ci skojarzonych z sze- regami czasowymi, mo(cid:276)emy spróbowa(cid:232) lepiej uwidoczni(cid:232) charakter danych przez pogrupowanie ich w odcinkach dobowych (patrz rysunek 2.9). B(cid:246)- dziemy wtedy widzie(cid:232), jak wiele wiadomo(cid:264)ci zosta(cid:228)o wys(cid:228)anych pomi(cid:246)dzy parami adresów dziennie. Analiza szeregów czasowych mo(cid:276)e ujawnia(cid:232) momenty szczególnego nat(cid:246)- (cid:276)enia odbierania wiadomo(cid:264)ci e-mail od danych osób, a nawet pozwoli(cid:232) wy- wnioskowa(cid:232), jaki jest harmonogram czasu pracy tych osób. J(cid:253)zyk naturalny Sednem wiadomo(cid:264)ci poczty elektronicznej jest ich tre(cid:264)(cid:232). Mimo powszech- nego stosowania za(cid:228)(cid:241)czników multimedialnych poczta elektroniczna to wci(cid:241)(cid:276) przede wszystkim tekst: 44 (cid:95) Rozdzia(cid:293) 2. Dane Poleć książkęKup książkę Rysunek 2.9. Pogrupowane szeregi czasowe Subject: Re: Lawn Content-Type: text/plain; charset=ISO-8859-1 Dad, get a sack of Rye grass seed and plant it over there now. It will build up a nice turf over the winter, then die off when it warms up. Making for good topsoil you can plant regular grass in. Will keep the weeds from taking over. Russell Jurney twitter.com/rjurney russell.jurney@gmail.com datasyndrome.com Tre(cid:264)(cid:232) wiadomo(cid:264)ci mo(cid:276)emy analizowa(cid:232) przez zliczanie cz(cid:246)sto(cid:264)ci wyst(cid:246)po- wania poszczególnych s(cid:228)ów. Po wyeliminowaniu nieznacz(cid:241)cych s(cid:228)ów ty- powych (tzw. stopwords, takich jak „to”, „czy”, „i”) wygl(cid:241)da to tak jak na rysunku 2.10. Cz(cid:246)sto(cid:264)(cid:232) wyst(cid:246)powania s(cid:228)ów mo(cid:276)emy wykorzysta(cid:232) do wywnioskowania tematu wiadomo(cid:264)ci: ta konkretna wiadomo(cid:264)(cid:232) wydaje si(cid:246) by(cid:232) po(cid:264)wi(cid:246)cona ro(cid:264)linom i trawie, bo tego dotycz(cid:241) najcz(cid:246)(cid:264)ciej wyst(cid:246)puj(cid:241)ce s(cid:228)owa. Takie przetwarzanie j(cid:246)zyka naturalnego pozwala na wyodr(cid:246)bnienie cech nadaj(cid:241)- cych danym lepiej zdefiniowan(cid:241) struktur(cid:246), co umo(cid:276)liwia w(cid:228)(cid:241)czenie tych ustrukturyzowanych cech do dalszej analizy. Zabawnym sposobem ilustrowania cz(cid:246)sto(cid:264)ci wyst(cid:246)powania s(cid:228)ów s(cid:241) chmu- ry s(cid:228)ów, takie jak na rysunku 2.11. Prawdopodobie(cid:295)stwo W teorii prawdopodobie(cid:254)stwa modelujemy proces pozornie losowy, zli- czaj(cid:241)c wyst(cid:241)pienia i s(cid:241)siedztwo wyst(cid:241)pie(cid:254) poszczególnych w(cid:228)a(cid:264)ciwo(cid:264)ci, co Perspektywy danych (cid:95) 45 Poleć książkęKup książkę Rysunek 2.10. Cz(cid:246)sto(cid:264)(cid:232) wyst(cid:246)powania s(cid:228)ów w tre(cid:264)ci wiadomo(cid:264)ci Rysunek 2.11. Chmura s(cid:228)ów z tre(cid:264)ci wiadomo(cid:264)ci pozwala na wygenerowanie rozk(cid:228)adów prawdopodobie(cid:254)stwa. Owe rozk(cid:228)a- dy mo(cid:276)emy potem zaanga(cid:276)owa(cid:232) do generowania sugestii i klasyfikowania encji do ró(cid:276)nych kategorii. Rozk(cid:228)ady prawdopodobie(cid:254)stwa mo(cid:276)emy te(cid:276) wykorzystywa(cid:232) do stawiania prognoz. Mogliby(cid:264)my na przyk(cid:228)ad wygenerowa(cid:232) rozk(cid:228)ad prawdopodobie(cid:254)- stwa dla wiadomo(cid:264)ci wys(cid:228)anych, na podstawie zawarto(cid:264)ci pól from, to, i cc. Mo(cid:276)na wtedy próbowa(cid:232) odpowiada(cid:232) na pytania w rodzaju: je(cid:264)li nadawc(cid:241) jest russell.jurney@gmail.com, a wiadomo(cid:264)(cid:232) jest skierowana na pewien kon- kretny adres, to jaka jest szansa, (cid:276)e w polu cc wyst(cid:241)pi inny konkretny adres poczty elektronicznej? 46 (cid:95) Rozdzia(cid:293) 2. Dane Poleć książkęKup książkę W tym przypadku nasze surowe dane to zawarto(cid:264)(cid:232) pól from, to i cc z po- szczególnych wiadomo(cid:264)ci: From: Russell Jurney russell.jurney@gmail.com To: ****** Jurney ******@hotmail.com Cc: Ruth Jurney ****@hotmail.com Aby przeprowadzi(cid:232) nasz(cid:241) analiz(cid:246), zliczamy pary adresów from i to, czyli wspó(cid:228)wyst(cid:246)powanie adresów poczty elektronicznej. Wyró(cid:276)nijmy jedn(cid:241) pa- r(cid:246): to wiadomo(cid:264)ci wymieniane pomi(cid:246)dzy mn(cid:241) a redaktorem wydawnictwa O’Reilly, Mikiem Loukidesem (tabela 2.1). Tabela 2.1. Cz(cid:246)sto(cid:264)(cid:232) wspó(cid:228)wyst(cid:246)powania adresów from-to Od (from) russell.jurney@gmail.com russell.jurney@gmail.com russell.jurney@gmail.com russell.jurney@gmail.com russell.jurney@gmail.com russell.jurney@gmail.com russell.jurney@gmail.com Do (to) ****.jurney@gmail.com toolsreq@oreilly.com yoga*****@gmail.com user@pig.apache.org *****@hotmail.com mikel@oreilly.com russell.jurney@gmail.com Liczba 10 10 11 14 15 28 44 Podzielenie tych warto(cid:264)ci przez (cid:228)(cid:241)czn(cid:241) liczb(cid:246) wiadomo(cid:264)ci da w wyniku roz- k(cid:228)ad prawdopodobie(cid:254)stwa opisuj(cid:241)cy szans(cid:246), (cid:276)e dana wiadomo(cid:264)(cid:232) od takie- go nadawcy b(cid:246)dzie przeznaczona do danego adresata (tabela 2.2). Tabela 2.2. Prawdopodobie(cid:254)stwo wspó(cid:228)wyst(cid:246)powania adresów from-to Od (from) russell.jurney@gmail.com russell.jurney@gmail.com russell.jurney@gmail.com russell.jurney@gmail.com russell.jurney@gmail.com russell.jurney@gmail.com russell.jurney@gmail.com Do (to) ****.jurney@gmail.com toolsreq@oreilly.com yoga*****@gmail.com user@pig.apache.org *****@hotmail.com mikel@oreilly.com russell.jurney@gmail.com Prawdopodobie(cid:295)stwo 0,0359 0,0359 0,0395 0,0503 0,0539 0,1007 0,1582 Na koniec obliczamy prawdopodobie(cid:254)stwo wspó(cid:228)wyst(cid:246)powania par od- biorców dla danego adresata wiadomo(cid:264)ci (tabela 2.3). Dane te mo(cid:276)emy wykorzysta(cid:232) do podpowiadania, kto jeszcze by(cid:232) mo(cid:276)e po- winien by(cid:232) odbiorc(cid:241) wiadomo(cid:264)ci, je(cid:264)li jej w(cid:228)a(cid:264)ciwym adresatem jest dana Perspektywy danych (cid:95) 47 Poleć książkęKup książkę Tabela 2.3. P(cc|from (cid:320) to): prawdopodobie(cid:254)stwo wspó(cid:228)wyst(cid:241)pienia cc dla wyst(cid:241)pienia pary nadawca-adresat Adresat (to) Nadawca (from) russell.jurney@gmail.com mikel@oreilly.com russell.jurney@gmail.com mikel@oreilly.com russell.jurney@gmail.com mikel@oreilly.com russell.jurney@gmail.com toolsreq@oreilly.com toolsreq@oreilly.com russell.jurney@gmail.com Prawdopodobie(cid:295)stwo Odbiorca (cc) 0.0357 toolsreq@oreilly.com meghan@oreilly.com 0,25 mstallone@oreilly.com 0,25 0,1 meghan@oreilly.com 0,2 mikel@oreilly.com osoba. Tego rodzaju dane mo(cid:276)na wykorzystywa(cid:232) do sterowania mechani- zmami sugestii, takimi jak w podpowiadaniu odbiorców w poczcie Gmail (patrz rysunek 2.12). Rysunek 2.12. Podpowiadanie odbiorców w poczcie Gmail Pó(cid:274)niej zobaczymy, jak za pomoc(cid:241) wnioskowania bayesowskiego genero- wa(cid:232) u(cid:276)yteczne podpowiedzi odbiorców, nawet przy niepe(cid:228)nych danych prawdopodobie(cid:254)stwa wspó(cid:228)wyst(cid:246)powania (to znaczy, kiedy mamy luki w tabeli 2.3) Podsumowanie Przekonali(cid:264)my si(cid:246), (cid:276)e analizuj(cid:241)c wpó(cid:228)ustrukturyzowane dane za pomoc(cid:241) ró(cid:276)nych algorytmów i perspektyw, mo(cid:276)emy uzyska(cid:232) lepsze ukierunkowa- nie przysz(cid:228)ych zastosowa(cid:254) ni(cid:276) w przypadku (cid:264)ci(cid:264)le ustrukturyzowanych i znormalizowanych zestawie(cid:254) relacyjnych. Zdefiniowane tu perspektywy b(cid:246)dziemy stosowa(cid:232) w kolejnych rozdzia(cid:228)ach do wytwarzania funkcjonalno- (cid:264)ci, w miar(cid:246) wspinania si(cid:246) w gór(cid:246) piramidy warto(cid:264)ci danych. A w nast(cid:246)p- nym rozdziale nauczymy si(cid:246) okre(cid:264)la(cid:232) schematy dla naszego sk(cid:228)adowiska danych za pomoc(cid:241) Apache Pig. 48 (cid:95) Rozdzia(cid:293) 2. Dane Poleć książkęKup książkę Skorowidz cz(cid:246)sto(cid:264)(cid:232) wspó(cid:228)wyst(cid:246)powania adresów, 47 wyst(cid:246)powania s(cid:228)ów, 46 D dane ustrukturyzowane, 31 DotCloud, 84 dzielenie si(cid:246) wynikami, 21 E eksplorowanie danych, 143 ekstrakcja s(cid:228)ów z wiadomo(cid:264)ci, 152 Elastic MapReduce, 89 wyniki przetwarzania, 93 E-mail, 29 Excel, 60 F Flask, 70, 110 funkcje w zespole, 20 G generowanie list wiadomo(cid:264)ci, 116 GitHub, 83 Google Analytics, 97 180 A adaptowanie do zmian, 18 adresy e-mail, 130 Agile, 13 Amazon Web Services, 87 analitycy, 17 anatomia prezentacji, 119 aplikacje WWW, 125 Avro, 52 Avro w Pythonie, 53 B badacze, 17 bazy dokumentowe, 51 biblioteka D3.js, 78 nvd3.js, 78 pyelasticsearch, 68 Big Data, 13–16, 22 b(cid:228)(cid:241)d na stronie, 148 Bootstrap, 73 budowanie raportów, 144 C chmura, cloud, 15, 81 chmura s(cid:228)ów, 46 chmury obliczeniowe, cloud computing, 82 Poleć książkęKup książkę H HDFS, 51 histogram wiadomo(cid:264)ci, 140 z wyró(cid:276)nion(cid:241) dominant(cid:241), 141 L lekkie aplikacje WWW, 70 listy krotek, 152 wiadomo(cid:264)ci, 116 I identyfikator UUID, 39 indeksowanie wiadomo(cid:264)ci, 124 instalacja Avro, 53 Bootstrap Project, 73 ElasticSearch, 66 MongoDB, 62, 63 Piga, 58 Wonderdog, 66 in(cid:276)ynierowie, 17 operacji, 18 platformy, 17 j(cid:246)zyk HTML, 120 naturalny, 44 Python, 52 J K klienci, 17 kola(cid:276), 27 kolejka zada(cid:254), 37 kolektory, 51 konfigurowanie wirtualnego (cid:264)rodowiska, 52 konsola Elastic MapReduce, 92 kontrola zwinno(cid:264)ci, 115 krotki, 152 krotki pythonowe, 152 (cid:292) (cid:228)(cid:241)czenie rekordów, 147 M makrodefinicja, 153 marketingowcy, 17 mened(cid:276)er akwizycji, 17 produktów, 17 model kaskadowy, 14 MongoDB, 62, 94, 116 monitorowanie, 97 monta(cid:276) ko(cid:254)cowy, 106 Mortar Data, 98 N narz(cid:246)dzia zwinno(cid:264)ci, 49 NoSQL, 15, 37 O obliczanie wspó(cid:228)czynników odpowiedzi, 166 obs(cid:228)uga Avro, 53 P P(reply|from to), 171 P(reply|token), 171 personalizacja, 167 perspektywy danych, 40 Pig, 58 piramida warto(cid:264)ci danych, 102 Skorowidz (cid:95) 181 Poleć książkęKup książkę pobieranie zawarto(cid:264)ci skrzynki pocztowej, 107 potok przetwarzaj(cid:241)cy, 69 potoki danych, 40 prawdopodobie(cid:254)stwo, 45, 48 predykcje w czasie rzeczywistym, 174 predyktor bayesowski, 171 prezentacja, 119 danych, 72 list wiadomo(cid:264)ci, 118 pojedynczej wiadomo(cid:264)ci, 114 tabelaryczna, 138 wiadomo(cid:264)ci w przegl(cid:241)darce, 110 proces wytwórczy, 22 roboczy, 87 produktywno(cid:264)(cid:232), 24 prognozowanie, 161 program curl, 67 programi(cid:264)ci aplikacji WWW, 17 programowanie w parach, 24 projektanci interakcji, 17 interfejsów, 17 prototyp, 120 przegl(cid:241)darka WWW, 51 przep(cid:228)yw danych, 41, 50, 61 pracy, 19 przestrze(cid:254) osobista, 26 prywatna, 26 wspó(cid:228)pracy, 25 przeszukiwanie wiadomo(cid:264)ci e-mail, 124 przetwarzanie danych, 58 danych w Pigu, 58 po stronie serwera, 81 wiadomo(cid:264)ci e-mail, 108 przewidywanie, 171 wspó(cid:228)czynnika odpowiedzi na wiadomo(cid:264)ci, 162 182 (cid:95) Skorowidz publikowanie danych, 62 wiadomo(cid:264)ci e-mail, 108 wyników, 173 pymongo, 110 Python, 70 R raporty, 143 rejestrowanie zdarze(cid:254), 177 renderowanie strony HTML5, 111 role, 17 rozpoznawanie problemów, 18 S schemat wiadomo(cid:264)ci poczty elektronicznej, 32 serializacja, 38 zawarto(cid:264)ci skrzynki pocztowej, 107 zdarze(cid:254), 52, 107 serwer aplikacji WWW, 51 Flask, 71 wiadomo(cid:264)ci, 110 sieci, 41 sie(cid:232) spo(cid:228)eczna, 42, 43 Simple Storage Service, 88 skalowalno(cid:264)(cid:232), 15, 49 skalowanie MongoDB, 96 sk(cid:228)ad danych, 51 skrypt elasticsearch.pig, 67 flask_echo.py, 70, 71 flask_mongo.py, 71 mongo.pig, 64 Pig Latin, 61 related_email_addresses.pig, 144 sent_distributions.pig, 135 SQL, 31 stawianie prognoz, 161 stos programowy, 82 Poleć książkęKup książkę struktura strony, 148 surowe wiadomo(cid:264)ci e-mail, 30 szablony Jinja2, 111 szeregi czasowe, 44, 45 (cid:264)rodowisko, 24 TF-IDF, 152 (cid:315) T U ukierunkowywanie dzia(cid:228)a(cid:254) u(cid:276)ytkowników, 169 W wiadomo(cid:264)ci wys(cid:228)ane, 138 wizualizacja danych, 78, 129 w przekroju czasowym, 135 w(cid:228)a(cid:264)ciwo(cid:264)ci skutecznych wiadomo(cid:264)ci e-mail, 170 WSC, warehouse-scale computers, 81 wspó(cid:228)czynnik odpowiedzi na wiadomo(cid:264)ci, 162 prawdopodobie(cid:254)stwa, 171 WWW, 70 wykresy, 129 wyodr(cid:246)bnianie adresów, 131 cech, 39 encji, 130 wypychanie danych, 63 wyszukiwanie w danych, 67 wiadomo(cid:264)ci, 125 wyszukiwarka ElasticSearch, 66 wy(cid:264)wietlanie liczników, 71 rekordów, 105 wspó(cid:228)czynników odpowiedzi, 168 Z zapisywanie danych w dotCloud, 96 w MongoDB, 96 zbieranie danych, 55 rekordów, 105 zbiory krotek, 152 zdarzenia, 51 zespo(cid:228)y, 16 zliczanie wiadomo(cid:264)ci, 131 zwinne przetwarzanie, 50 wytwarzanie oprogramowania, 14 zwinno(cid:264)(cid:232) platformy, 21 Skorowidz (cid:95) 183 Poleć książkęKup książkę
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Zwinna analiza danych. Apache Hadoop dla każdego
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: