Mysql Bevegelig Gjennomsnitt Eksempel


Få en liste over unike verdier fra en MySQL-kolonne Ønsker du å få en liste over alle de forskjellige verdiene i en kolonne Bruk DISTINCT søkeordet. Heres et eksempel: (skrevet 2005-04-14, oppdatert 2006-06-05) Tilknyttede emner er indeksert som nedenfor, eller skriv inn melksh. amnnnn for individuelle artikler S157 - Flere MySQL-kommandoer 4481 Utvinning av data fra sikkerhetskopier for å gjenopprette utvalgte rader fra MySQL tabeller - (2015-05-01) 3270 SQL - Data v Metadata, og de ulike stadiene av datasalg - (2011-04-29) 3061 Databaser - hvorfor data er delt inn i separate tabeller, og hvordan de skal bli med -11-20) 2647 Fjerne duplikater fra en MySQL-tabell - (2010-02-22) 2645 Optimalisering og caching av MySQL-henvendelser - (2010-02-22) 2644 Telling av rader i sluttet MySQL-tabeller - (2010-02-22) 2643 Sammenligning av tabeller med tilknytning til MySQL - (2010-02-21) 2448 MySQL - effektivitet og andre emner - (2009-10-10) 2259 Gruppering av rader for en sammendragsrapport - MySQL og PHP - (2009-06-27) 2110 MySQL - ser etter poster i ett bord som ikke svarer til poster i et annet bord - (2009-03-31) 1904 Ruby, Perl, Linux, MySQL - noen treningsnotater - (2008-11-23) 1735 Finne seg ds og arbeidsgrenser (MySQL, Perl, PHP) - (2008-08-03) 1574 Tilgang til MySQL-tabeller revidert - å finne ikke-matchende poster, osv. - (2008-03-15) 1331 MySQL slutter revisited - (2007-09-03) 1235 Skriv ut tall som ord - MySQL med Perl eller PHP - (2007-06-17) 1213 MySQL - rekkefølgen av klausuler og rekkefølgen av handlinger - (2007-06-01) 673 Helikoptervisninger og tartaner - (2006-04- 061 591 Nøkkelfakta - SQL og MySQL - (2006-02-04) 581 Lagre en MySQL-spørringsresultater til din lokale disk for Excel - (2006-01-29) 572 Gi forskerens makt over databaseanalyse - (2006-01 -22) 567 Kombinere lignende rader fra en MySQL-database velg - (2006-01-17) 517 En tilfeldig sjanse, og redusere data til håndterbare nivåer - (2005-12-04) 515 MySQL - en FAQ - (2005-12- 03) 513 MySQL - JOIN eller WHERE for å koble tabeller riktig - (2005-12-01) 502 VELG i MySQL - velg de rader du vil ha - (2005-11-22) 494 MySQL - en poengsum med ting å huske - (2005 -11-12) 449 Matchende i MySQL - (2005-09-24) 159 MySQL - Optimis ing Selects - (2004-12-21) 158 MySQL - VENSTRE KOM OG HØYRE GJEN, INNER JOIN og OUTER JOIN - (2004-12-20) Noen andre artikler 4724 innlegg, side for side Dette er en side arkivert fra The Horses Mouth på wellhohorse - Graham Ellis 'dagbok og skrifter. Alt forsøk ble gjort for å gi nåværende informasjon på det tidspunktet siden ble skrevet, men ting går fremover i vår virksomhet - nye programvareutgivelser, prisendringer, nye teknikker. Vennligst sjekk tilbake via vår hovedside for aktuelle kurs, priser, versjoner, etc. - noe omtale av en pris i The Horses Mouth kan ikke tas som et tilbud om å levere til den prisen. Takk for at du besøkte oss. Vi gir ikke sponsing eller invitasjoner til våre kurs for å støtte UK Visa-søknader. Hvis du ønsker å bestille noen av våre kurs og er statsborger i Ukraina, vennligst sjekk med ditt lokale britiske konsulat og gjør eventuelle nødvendige Visa-ordninger før du bestiller. Mer kommentar av Colin (publisert 2010-10-08) Foreslått lenke. Havent sett nettstedet ditt kutte opp i sql søk i mange år. Jeg fant denne siden å søke etter en løsning på et litt annet problem: Jeg trenger en liste over unike verdier og et ID. Enhver id vil gjøre. Først eller sist. Så hvordan fra bordet ditt: Hvordan returnere den distinkte destinasjonen sammen med en tid Velg en tid, en hvilken som helst tidstapoverflow har en lignende problemstilling. Jeg gir link. Min kollega jeg vil ha unik har noen tunge calcs, så jeg prøver å unngå flere valg og slutter så langt som mulig. 3783 Gjennomsnittlig side rangering - 4.0Hadoop eksempel: Hei Verden med Java, Gris, Hive, Flume, Fuse, Oozie og Sqoop med Informix, DB2 og MySQL Det er mye spenning om Big Data og mye forvirring å gå med den. Denne artikkelen gir en arbeidsdefinisjon av Big Data, og fungerer så gjennom en rekke eksempler, slik at du kan få en førstehånds forståelse av noen av kapasitetene til Hadoop, den ledende open source-teknologien i Big Data-domenet. Spesielt kan vi fokusere på følgende spørsmål. Hva er Big Data, Hadoop, Sqoop, Hive og Pig, og hvorfor er det så mye spenning i dette rommet Hvordan relaterer Hadoop til IBM DB2 og Informix Kan disse teknologiene spille sammen Hvordan kan jeg komme i gang med Big Data Hva er noen enkle eksempler som kjører på en enkelt PC For den super utålmodige, kan du gjøre følgende hvis du allerede kan definere Hadoop og vil ha rett til å jobbe med kodeprøver. Brann opp Informix eller DB2-forekomsten din. Last ned VMWare-bildet fra Cloudera-nettstedet, og øk den virtuelle maskinens RAM-innstilling til 1,5 GB. Gå til delen som inneholder kodeprøver. Det er en MySQL-forekomst innebygd i VMWare-bildet. Hvis du gjør øvelsene uten nettverkstilkobling, bruk MySQL-eksemplene. For alle andre, les videre. Hva er Big Data Big Data er stor i mengde, er fanget i rask takt, og er strukturert eller ustrukturert, eller en kombinasjon av det ovennevnte. Disse faktorene gjør det vanskelig for Big Data å fange, min, og administrere ved hjelp av tradisjonelle metoder. Det er så mye sprøytenarkoman i dette rommet at det kan bli en utvidet debatt bare om definisjonen av store data. Bruke Big Data-teknologien er ikke begrenset til store mengder. Eksemplene i denne artikkelen bruker små prøver for å illustrere evnen til teknologien. Fra og med 2012, er store klynger i 100 Petabyte-serien. Store data kan være både strukturert og ustrukturert. Tradisjonelle relasjonsdatabaser, som Informix og DB2, gir bevisste løsninger for strukturerte data. Via utvidbarhet klarer de også ustrukturert data. Hadoop-teknologien gir nye og mer tilgjengelige programmeringsteknikker for arbeid på massive datalager med både strukturert og ustrukturert data. Hvorfor all spenningen Det er mange faktorer som bidrar til hype rundt Big Data, inkludert følgende. Ta sammen beregning og lagring sammen på varemerker: Resultatet er lynrask hastighet til lav pris. Prisutvikling: Hadops store datateknologi gir betydelige kostnadsbesparelser (tenk en faktor på ca. 10) med betydelige ytelsesforbedringer (igjen, tenkfaktor på 10). Kilometertrykket kan variere. Hvis eksisterende teknologi kan bli så dramatisk trounced, er det verdt å undersøke om Hadoop kan utfylle eller erstatte aspekter av din nåværende arkitektur. Linjær skalerbarhet: Hver parallell teknologi gjør krav om oppskalering. Hadoop har ekte skalerbarhet siden den siste utgivelsen utvider grensen på antall noder til over 4000. Full tilgang til ustrukturert data: En svært skalerbar datalager med en god parallell programmeringsmodell, MapReduce, har lenge vært en utfordring for bransjen. Hadoops programmeringsmodell løser ikke alle problemer, men det er en sterk løsning for mange oppgaver. Hadoop-distribusjoner: IBM og Cloudera En av forvirringspunktene er, Hvor får jeg programvare til å jobbe med Big Data Eksemplene i denne artikkelen er basert på den gratis Cloudera-distribusjonen av Hadoop som heter CDH (for Cloudera-distribusjon inkludert Hadoop). Dette er tilgjengelig som et VMWare-bilde fra Cloudera-nettstedet. IBM har nylig annonsert at den porterer sin store dataplatform for å kjøre på CDH. Begrepet forstyrrende teknologi er tungt utnyttet, men i dette tilfellet kan det være aktuelt. Hva er Hadoop Følgende er flere definisjoner av Hadoop, som alle målretter mot et annet publikum i bedriften: For ledere: Hadoop er et Apache-åpen kildeprogramvareprosjekt for å få verdi fra den utrolige volumevelocityvarden av data om organisasjonen din. Bruk dataene i stedet for å kaste det meste av det. For de tekniske ledere: En åpen kildekode-pakke med programvare som mines den strukturerte og ustrukturerte BigData om din bedrift. Den integreres med ditt eksisterende Business Intelligence-økosystem. Legal: En åpen kildekode-pakke med programvare som er pakket og støttet av flere leverandører. Engineering: En massivt parallell, delt ingenting, Java-basert kart-redusere utførelsesmiljø. Tenk hundrevis til tusenvis av datamaskiner som arbeider med det samme problemet, med innebygd feilfasthet. Prosjekter i Hadoop økosystemet gir data lasting, høyere nivå språk, automatisert cloud distribusjon og andre evner. Sikkerhet: En Kerberos-sikret programvarepakke. Hva er komponentene til Hadoop Apache Hadoop-prosjektet har to kjernekomponenter, filbutikken heter Hadoop Distributed File System (HDFS), og programmeringsrammen kalles MapReduce. Det finnes en rekke støtteprosjekter som utnytter HDFS og MapReduce. Denne artikkelen vil gi et sammendrag, og oppfordrer deg til å få OReily-boken Hadoop The Definitive Guide, 3. utgave, for flere detaljer. Definisjonene nedenfor er ment å gi akkurat nok bakgrunn for at du kan bruke kodekommandoene som følger. Denne artikkelen er virkelig ment å komme i gang med praktisk erfaring med teknologien. Dette er en veiledningsartikkel mer enn en hva som er eller kan diskutere artikkelen. HDFS. Hvis du vil at 4000 datamaskiner skal jobbe med dataene dine, så kan du bedre spre dataene dine på 4000 datamaskiner. HDFS gjør dette for deg. HDFS har noen bevegelige deler. Datanodene lagrer dataene dine, og Namenode holder styr på hvor ting er lagret. Det er andre brikker, men du har nok til å komme i gang. MapReduce. Dette er programmeringsmodellen for Hadoop. Det er to faser, ikke overraskende kalt Map and Reduce. For å imponere vennene dine, fortell dem, er det en shuffle-sortering mellom Map and Reduce-fasen. JobTracker klarer de 4000 komponentene i MapReduce-jobben din. TaskTrackers tar ordre fra JobTracker. Hvis du liker Java, så kode i Java. Hvis du liker SQL eller andre ikke-Java-språk, har du fortsatt lykke til, du kan bruke et verktøy som heter Hadoop Streaming. Hadoop Streaming. Et verktøy for å aktivere MapReduce-koden på et hvilket som helst språk: C, Perl, Python, C, Bash, etc. Eksemplene inkluderer en Python-mapper og en AWK-reduksjon. Hive og Hue. Hvis du liker SQL, vil du være glad for å høre at du kan skrive SQL og ha Hive konvertere den til en MapReduce-jobb. Nei, du får ikke et fullt ANSI-SQL-miljø, men du får 4000 notater og flere petabyte skalerbarhet. Hue gir deg et nettleserbasert grafisk grensesnitt for å gjøre Hive-arbeidet ditt. Gris. Et programmeringsmiljø på høyere nivå for å gjøre MapReduce-koding. Gris-språket kalles gris latin. Du kan finne navnekonvensjonene litt ukonvensjonelle, men du får utrolig prisforbruk og høy tilgjengelighet. Sqoop. Gir toveis dataoverføring mellom Hadoop og din favorittrelasjonsdatabase. Oozie. Administrerer Hadoop arbeidsflyt. Dette erstatter ikke planleggeren eller BPM-verktøyet, men det gir om-da-else forgrening og kontroll i dine Hadoop-jobber. HBase. En super-skalerbar nøkkelverdibutikk. Det virker veldig mye som en vedvarende hash-kart (for python fans think dictionary). Det er ikke en relasjonsdatabase til tross for navnet HBase. FlumeNG. En sanntidslaster for streaming av data til Hadoop. Det lagrer data i HDFS og HBase. Du vil komme i gang med FlumeNG, noe som forbedrer den opprinnelige flommen. Whirr. Cloud provisioning for Hadoop. Du kan starte opp en klynge på bare noen få minutter med en veldig kort konfigurasjonsfil. Mahout. Maskinlæring for Hadoop. Brukes for prediktiv analyse og annen avansert analyse. Sikring. Gjør HDFS-systemet ser ut som et vanlig filsystem, slik at du kan bruke ls, rm, cd og andre på HDFS-data Zookeeper. Brukes til å administrere synkronisering for klyngen. Du vil ikke jobbe mye med Zookeeper, men det jobber hardt for deg. Hvis du tror du må skrive et program som bruker Zookeeper, er du enten veldig, veldig, smart og kan være en komité for et Apache-prosjekt, eller du skal ha en veldig dårlig dag. Figur 1 viser nøkkelbrikkene til Hadoop. Figur 1. Hadoop arkitektur HDFS, bunnlaget, sitter på en klynge av råvarevarevare. Enkel rackmonterte servere, hver med 2-Hex-kjerne-CPUer, 6 til 12 disker og 32 gig ram. For et kart-redusere jobb, leser mapperlaget fra diskene med svært høy hastighet. Mapperen avgir nøkkelverdipar som er sortert og presentert til reduksjonsmaskinen, og reduksjonslaget oppsummerer nøkkelverdiparene. Nei, du trenger ikke å oppsummere, du kan faktisk ha et kart-redusere jobb som bare har mappere. Dette bør bli lettere å forstå når du kommer til python-awk eksempelet. Hvordan integrerer Hadoop med Informix eller DB2-infrastrukturen Hadoop integrerer seg veldig bra med Informix og DB2-databaser med Sqoop. Sqoop er den ledende open source-implementeringen for å flytte data mellom Hadoop og relationsdatabaser. Den bruker JDBC til å lese og skrive Informix, DB2, MySQL, Oracle og andre kilder. Det finnes optimerte adaptere for flere databaser, inkludert Netezza og DB2. Komme i gang: Slik kjører du enkle Hadoop, Hive, Pig, Oozie og Sqoop-eksempler Du er ferdig med introduksjoner og definisjoner, nå er det på tide for de gode greiene. For å fortsette, må du laste ned VMWare, virtuell boks eller et annet bilde fra Cloudera-nettstedet og begynne å gjøre MapReduce. Det virtuelle bildet antar at du har en 64-biters datamaskin og et av de populære virtualiseringsmiljøene. De fleste av virtualiseringsmiljøene har gratis nedlasting. Når du prøver å starte opp et 64-biters virtuelt bilde, kan du få klager om BIOS-innstillinger. Figur 2 viser den nødvendige endringen i BIOS, i dette tilfellet på en Thinkpad8482. Vær forsiktig når du gjør endringer. Enkelte sikkerhetspakker for bedriftene krever et passord etter at en BIOS-endring er avsluttet før systemet starter opp igjen. Figur 2. BIOS-innstillinger for en 64-biters virtuell gjest De store dataene som brukes her er faktisk ganske små. Poenget er ikke å få den bærbare datamaskinen til å brenne fra sliping på en massiv fil, men for å vise deg kilder til data som er interessante, og kart-redusere jobber som svarer på meningsfulle spørsmål. Last ned Hadops virtuelle bilde Det anbefales sterkt at du bruker Cloudera-bildet for å kjøre disse eksemplene. Hadoop er en teknologi som løser problemer. Cloudera bildeemballasjen lar deg fokusere på store data-spørsmålene. Men hvis du bestemmer deg for å samle alle delene selv, har Hadoop blitt problemet, ikke løsningen. Last ned et bilde. CDH4-bildet, det siste tilbudet er tilgjengelig her: CDH4-bilde. Den forrige versjonen, CDH3, er tilgjengelig her: CDH3-bilde. Du har ditt valg av virtualiseringsteknologi. Du kan laste ned et gratis virtualiseringsmiljø fra VMWare og andre. For eksempel, gå til vmware og last ned vmware-spilleren. Din bærbare datamaskin kjører nok Windows, så du kan laste ned vmware-spilleren til Windows. Eksemplene i denne artikkelen bruker VMWare for disse eksemplene, og kjører Ubuntu Linux ved hjelp av tjære i stedet for winzip eller tilsvarende. Når du lastet ned, untarunzip som følger: tar - zxvf cloudera-demo-vm-cdh4.0.0-vmware. tar. gz. Eller, hvis du bruker CDH3, bruk så følgende: tar - zxvf cloudera-demo-vm-cdh3u4-vmware. tar. gz Unzip fungerer vanligvis på tar-filer. Når du har blitt pakket ut, kan du skyte opp bildet på følgende måte: vmplayer cloudera-demo-vm. vmx. Du har nå en skjerm som ser ut som det som vises i Figur 3. Figur 3. Koble til virtuelt bilde Kommandoen vmplayer dykker rett inn og starter den virtuelle maskinen. Hvis du bruker CDH3, må du slå av maskinen og endre minnesinnstillingene. Bruk strømknappikonet ved siden av klokken i midten av bunnen av skjermen for å slå av den virtuelle maskinen. Du har da redigeringstilgang til de virtuelle maskininnstillingene. For CDH3 er neste trinn å overbelaste det virtuelle bildet med mer RAM. De fleste innstillinger kan bare endres med den virtuelle maskinen slått av. Figur 4 viser hvordan du får tilgang til innstillingen og øker RAM-en tildelt over 2 GB. Figur 4. Legge til RAM til den virtuelle maskinen Som vist i Figur 5, kan du endre nettverksinnstillingen til å bygge bro. Med denne innstillingen får den virtuelle maskinen sin egen IP-adresse. Hvis dette skaper problemer på nettverket ditt, kan du eventuelt bruke Network Address Translation (NAT). Du bruker nettverket for å koble til databasen. Figur 5. Endre nettverksinnstillingene for å brosere Du er begrenset av RAM på vertssystemet, så prøv ikke å tildele mer RAM enn det som finnes på maskinen din. Hvis du gjør det, kjører datamaskinen veldig sakte. Nå, for øyeblikket du har ventet på, gå videre og strøm på den virtuelle maskinen. Brukerens cloudera logges automatisk inn ved oppstart. Hvis du trenger det, er Cloudera-passordet: cloudera. Installer Informix og DB2 Du trenger en database for å jobbe med. Hvis du ikke allerede har en database, kan du laste ned Informix Developer-utgaven her eller gratis DB2 Express-C Edition. Et annet alternativ for å installere DB2 er å laste ned VMWare-bildet som allerede har DB2 installert på et SuSE Linux-operativsystem. Logg inn som root, med passordet: passord. Bytt til db2inst1 userid. Arbeid som roten er som å kjøre bil uten setebelte. Vennligst snakk med din lokale, vennlige DBA om å få databasen i gang. Denne artikkelen vil ikke dekke det her. Ikke prøv å installere databasen inne i det virtuelle Cloudera-bildet fordi det ikke er nok ledig diskplass. Den virtuelle maskinen vil koble til databasen ved hjelp av Sqoop som krever en JDBC-driver. Du må ha JDBC-driveren for databasen din i det virtuelle bildet. Du kan installere Informix-driveren her. Informix JDBC-driveren (husk, bare driveren i det virtuelle bildet, ikke databasen) installeres, vises i liste 1. Oppføring 1. Informix JDBC-driverinstallasjon Merk: Velg en underkatalog i forhold til homecloudera for ikke å kreve root-tillatelse for installasjon. DB2 JDBC-driveren er i glidelåsformat, slik at du bare pakker den ut i målkatalogen som vist i liste 2. Oppføring 2. DB2 JDBC-driverinstallasjon En rask introduksjon til HDFS og MapReduce Før du begynner å flytte data mellom relasjonsdatabasen og Hadoop, du trenger en rask introduksjon til HDFS og MapReduce. Det er mange hei verdenstrener for Hadoop, så eksemplene her er ment å gi bare nok bakgrunn til at databasevalueringene gir mening for deg. HDFS gir lagring over knutepunktene i klyngen din. Det første trinnet i å bruke Hadoop er å sette data inn i HDFS. Koden vist i Listing 3 får en kopi av en bok av Mark Twain og en bok av James Fenimore Cooper, og kopierer disse teksten til HDFS. Oppføring 3. Legg Mark Twain og James Fenimore Cooper inn i HDFS Du har nå to filer i en katalog i HDFS. Vennligst hold din spenning. Alvorlig, på en enkelt knute og med bare om lag 1 megabyte, er dette like spennende som å se maling tørt. Men hvis dette var en 400 node klynge og du hadde 5 petabytes live, så ville du virkelig ha problemer med å holde din spenning. Mange av Hadoop-veiledningene bruker ordtalleksemplet som er inkludert i eksempel-jarfilen. Det viser seg at mye av analysen innebærer telling og aggregering. Eksemplet i liste 4 viser hvordan du bruker ordtelleren. Oppføring 4. Telling av Twain og Cooper. Gz-suffikset på DS. txt. gz forteller Hadoop å håndtere dekomprimering som en del av kartreduksjonen. Cooper er litt verbose så fort fortjener komprimeringen. Det er ganske en strøm av meldinger fra å kjøre ordregistreringsjobben. Hadoop er glad for å gi mye detaljert informasjon om Mapping og Reducing-programmene som kjører på dine vegne. De kritiske linjene du vil se etter, vises i Liste 5, inkludert en ny liste over en mislykket jobb, og hvordan du løser en av de vanligste feilene du vil støte på, kjører MapReduce. Oppføring 5. MapReduce meldinger - den gledelige banen Hva betyr alle meldingene Hadoop har gjort mye arbeid og prøver å fortelle deg om det, inkludert følgende. Kontrollert for å se om inngangsfilen eksisterer. Kontrollert for å se om utdatakatalogen finnes, og hvis den gjør det, avbryter jobben. Ingenting verre enn å overskrive timer med beregning ved en enkel tastaturfeil. Distribuert Java-jarfilen til alle noder som er ansvarlige for arbeidet. I dette tilfellet er dette bare ett knutepunkt. Ran mapper fasen av jobben. Vanligvis analyserer dette inngangsfilen og sender et nøkkelparametre. Merk nøkkelen og verdien kan være objekter. Ran sorteringsfasen, som sorterer mapper-utgangen basert på nøkkelen. Ran reduksjonsfasen, vanligvis oppsummerer dette nøkkelverdien og skriver utdata til HDFS. Lagde mange beregninger på fremdriften. Figur 6 viser en prøvewebside for Hadoop jobbmålinger etter å ha kjørt Hive øvelsen. Figur 6. Eksempel på nettsiden til Hadoop Hva gjorde jobben og hvor er resultatet? Begge er gode spørsmål, og vises i Oppføring 6. Oppføring 6. Kart-Redusere utdata Hvis du kjører samme jobb to ganger og glemmer å slette utdatakatalogen, vil du motta feilmeldingene som vises i Oppføring 7. Å fikse denne feilen er like enkelt som å slette katalogen. Listing 7. MapReduce messages - feil på grunn av utdata som allerede finnes i HDFS Hadoop inkluderer et nettlesergrensesnitt for å inspisere statusen til HDFS. Figur 7 viser utgangen av ordstellingsjobben. Figur 7. Utforske HDFS med en nettleser En mer sofistikert konsoll er tilgjengelig gratis fra Cloudera-nettstedet. Det gir en rekke muligheter utover standard Hadoop-webgrensesnitt. Legg merke til at helsestatusen til HDFS i figur 8 er vist som dårlig. Figur 8. Hadoop-tjenester administrert av Cloudera Manager Hvorfor er det dårlig Fordi i en enkelt virtuell maskin, kan HDFS ikke lage tre kopier av datablokker. Når blokkene er underreplikert, er det fare for tap av data, slik at helsen til systemet er dårlig. God ting du ikke prøver å drive produksjon Hadoop jobber på en enkelt node. Du er ikke begrenset til Java for dine MapReduce-jobber. Dette siste eksempelet på MapReduce bruker Hadoop Streaming for å støtte en mapper skrevet i Python og en reduksjonsmaskin som bruker AWK. Nei, du trenger ikke å være en Java-guru for å skrive Map-Reduce Mark Twain var ikke en stor fan av Cooper. I dette tilfelle vil Hadoop gi litt enkel litterær kritikk som sammenligner Twain og Cooper. FleschKincaid-testen beregner leseverdien av en bestemt tekst. En av faktorene i denne analysen er gjennomsnittlig setningslengde. Parsing setninger viser seg å være mer komplisert enn bare å lete etter perioden karakter. OpenNLP-pakken og Python NLTK-pakken har gode setningsparser. For enkelhets skyld vil eksemplet som vises i Liste 8 bruke ordlengde som en surrogat for antall stavelser i et ord. Hvis du vil ta dette til neste nivå, implementerer du FleschKincaid-testen i MapReduce, gjennomsøk nettet, og beregner leseverdier for favorittnyhetssider. Oppføring 8. En pythonbasert mapper litterær kritikk Mapperenes utgang, for ordet Twain, vil være: 5 0. De numeriske ordlengder er sortert i rekkefølge og presentert til reduksjonsmaskinen i rekkefølge. I eksemplene som vises i oppføringer 9 og 10, er det ikke nødvendig å sortere dataene for å få riktig utgang, men sorteringen er innebygd i MapReduce-infrastrukturen, og det vil skje uansett. Oppføring 9. En AWK-reduksjon for litteraturkritikk Oppføring 10. Kjører en Python-mapper og AWK-reduksjon med Hadoop Streaming Mark Twain-fansen kan gjerne slappe av og vite at Hadoop finner Cooper for å bruke lengre ord, og med en sjokkerende standardavvik (humor beregnet). Det antar selvsagt at kortere ord er bedre. La oss gå videre, neste gang skriver du data i HDFS til Informix og DB2. Bruke Sqoop til å skrive data fra HDFS til Informix, DB2 eller MySQL via JDBC. Sqoop Apache Project er et open-source JDBC-basert Hadoop til database data bevegelsesverktøy. Sqoop ble opprinnelig opprettet i en hackathon på Cloudera og deretter åpnet. Flytte data fra HDFS til en relasjonsdatabase er et vanlig brukstilfelle. HDFS og Map-Reduce er flotte på å løfte tungt. For enkle spørringer eller en back-end-butikk for et nettsted, er caching av Map-Reduce-utgangen i en relasjonsbutikk et godt designmønster. Du kan unngå å kjøre Map-Reduce Word Count igjen ved å bare Sqooping resultatene til Informix og DB2. Du har generert data om Twain og Cooper, kan nå flytte den til en database, som vist i Listing 11. Listing 11. JDBC driveroppsett Eksemplene vist i oppføringer 12 til 15 presenteres for hver database. Vennligst hopp over til eksemplet av interesse for deg, inkludert Informix, DB2 eller MySQL. For databasepolyglotene, ha det gøy å gjøre hvert eksempel. Hvis din valgfrie database ikke er inkludert her, vil det ikke være en stor utfordring å få disse eksemplene til å fungere andre steder. Listing 12. Informix brukere: Sqoop skriver resultatet av ordet til Informix Listing 13. Informix Brukere: Sqoop skriver resultatet av ordet til Informix Listing 14. DB2-brukere: Sqoop skriver resultatet av ordet til DB2-liste 15 . MySQL-brukere: Sqoop skriver resultatet av ordet til MySQL Importerer data til HDFS fra Informix og DB2 med Sqoop Setter inn data i Hadoop HDFS kan også oppnås med Sqoop. Den toveis-funksjonaliteten styres via importparameteren. Eksempeldatabasene som følger med begge produktene, har noen enkle datasett som du kan bruke til dette formålet. Oppføring 16 viser syntaksen og resultatene for Sqooping hver server. For MySQL-brukere, kan du tilpasse syntaksen fra enten Informix eller DB2-eksemplene som følger. Oppføring 16. Sqoop import fra Informix sample database til HDFS Hvorfor er det fire forskjellige filer som hver inneholder bare en del av dataene Sqoop er et svært parallellisert verktøy. Hvis en 4000 node-klynger som kjører Sqoop, importerte en full gass fra en database, ville de 4000 tilkoblingene se ut som et fornektelsesangrep mot databasen. Sqoops standardkoblingsgrense er fire JDBC-tilkoblinger. Hver forbindelse genererer en datafil i HDFS. Dermed de fire filene. Ikke bekymre deg, du vil se hvordan Hadoop virker på tvers av disse filene uten noen problemer. Det neste trinnet er å importere et DB2-bord. Som vist i liste 17, ved å angi alternativet - m 1, kan en tabell uten primærnøkkel importeres, og resultatet er en enkelt fil. Oppføring 17. Sqoop-import fra DB2-prøvedatabase til HDFS Bruke Hive: Bli med Informix og DB2-data Det er en interessant brukstilgang å bli med data fra Informix til DB2. Ikke veldig spennende for to trivielle tabeller, men en stor seier for flere terabyte eller petabytes av data. Det er to grunnleggende tilnærminger for å bli med i forskjellige datakilder. Leaving dataene i ro og bruk av føderasjonsteknologi versus flytting av dataene til en enkelt butikk for å utføre samtalen. Hadops økonomi og ytelse gjør at dataene flyttes til HDFS og utfører den tunge løftingen med MapReduce et enkelt valg. Begrensninger på nettverksbåndbredde skaper en grunnleggende barriere hvis du prøver å bli med i data i ro med en føderasjonsstilteknologi. Hive gir en delmengde av SQL for drift på en klynge. Det gir ikke transaksjonssemantikk. Det er ikke en erstatning for Informix eller DB2. Hvis du har litt tung løft i form av bordslutt, selv om du har noen mindre bord, men trenger å gjøre ekkel kartesiske produkter, er Hadoop det valgfrie verktøyet. For å bruke Hive-spørrespråk, er en delmengde av SQL kalt Hiveql-tabellmetadata påkrevd. Du kan definere metadataene mot eksisterende filer i HDFS. Sqoop gir en praktisk snarvei med alternativet create-hive-table. MySQL-brukerne bør gjerne tilpasse eksemplene som vises i liste 18. En interessant øvelse vil bli med MySQL, eller andre relasjonelle databasetabeller, til store regneark. Oppføring 18. Sammenkobling av informix. customer-tabellen til db2.staff-tabellen Det er mye finere når du bruker Hue for et grafisk nettlesergrensesnitt, som vist i figurene 9, 10 og 11. Figur 9. Hue Beeswax GUI for Hive i CDH4 , se Hiveql-spørring Figur 10. Hue Beeswax GUI for Hive, se Hiveql-spørring Figur 11. Hue Beeswax grafisk nettleser, se Informix-DB2-resultatene ved hjelp av Pig: Bli med Informix og DB2-data Pig er et prosesspråk. Akkurat som Hive, under dekslene genererer MapReduce-koden. Hadoop brukervennlig vil fortsette å forbedre etter hvert som flere prosjekter blir tilgjengelige. Mye som noen av oss liker kommandolinjen, det er flere grafiske brukergrensesnitt som fungerer veldig bra med Hadoop. Oppføring 19 viser grisekoden som brukes til å bli med på kundetabellen og stabellbordet fra forrige eksempel. Oppføring 19. Griseksempel for å bli med i Informix-tabellen til DB2-tabellen Hvordan velger jeg Java, Hive eller Gris Du har flere alternativer for programmering Hadoop, og det er best å se på brukskassen for å velge riktig verktøy for jobben . Du er ikke begrenset til å jobbe med relasjonsdata, men denne artikkelen er fokusert på Informix, DB2 og Hadoop som spiller godt sammen. Å skrive hundrevis av linjer i Java for å implementere en relasjonsstile hash-join er et komplett sløsing med tid siden denne Hadoop MapReduce-algoritmen allerede er tilgjengelig. Hvordan velger du Dette er et spørsmål om personlig preferanse. Noen liker koding satt operasjoner i SQL. Noen foretrekker prosesskode. Du bør velge språket som vil gjøre deg mest produktive. Hvis du har flere relasjonelle systemer og ønsker å kombinere alle dataene med god ytelse til et lavt prispunkt, er Hadoop, MapReduce, Hive og Pig klar til å hjelpe. Ikke slett dataene dine: Rull en partisjon fra Informix til HDFS De fleste moderne relasjonsdatabaser kan partisjonere data. Et vanlig bruk er å partisjonere etter tidsperiode. Et fast datavindu er lagret, for eksempel et rullende 18 måneders intervall, hvoretter dataene arkiveres. Detach-partisjonskapasiteten er meget kraftig. Men etter at partisjonen er løsrevet, hva gjør man med dataene. Tapearkivet med gamle data er en svært kostbar måte å kaste bort de gamle bytesene. Når du er flyttet til et mindre tilgjengelig medium, blir dataene svært sjelden tilgjengelig, med mindre det er krav om juridisk revisjon. Hadoop gir et langt bedre alternativ. Flytte arkivbyten fra den gamle partisjonen til Hadoop gir høy ytelse med mye lavere kostnader enn å holde dataene i det opprinnelige transaksjons - eller datamartdatawarehouse-systemet. Dataene er for gamle til å være av transaksjonsverdi, men er fortsatt svært verdifulle for organisasjonen for langsiktig analyse. Sqoop-eksemplene som er vist tidligere, gir grunnleggende om hvordan du flytter disse dataene fra en relasjonspartisjon til HDFS. Sikring - Komme til HDFS-filene dine via NFS InformixDB2flat-fildataene i HDFS kan nås via NFS, som vist i liste 20. Dette gir kommandolinjeoperasjoner uten å bruke hadoop fs-yadayada-grensesnittet. Fra et teknologisk brukstilfelleperspektiv er NFS sterkt begrenset i et Big Data-miljø, men eksemplene er inkludert for utviklere og ikke så store data. Oppføring 20. Sette opp sikring - få tilgang til HDFS-dataene dine via NFS Flume - lag en last klar fil Flume neste generasjon, eller flume-ng er en høyhastighets parallelllaster. Databaser har høyhastighetslastere, så hvordan spiller de godt sammen? Det relasjonelle brukstilfellet for Flume-ng skaper en laste klar fil, lokalt eller eksternt, slik at en relasjonell server kan bruke sin høyhastighetslaster. Yes, this functionality overlaps Sqoop, but the script shown in Listing 21 was created at the request of a client specifically for this style of database load. Listing 21. Exporting HDFS data to a flat file for loading by a database Oozie - adding work flow for multiple jobs Oozie will chain together multiple Hadoop jobs. There is a nice set of examples included with oozie that are used in the code set shown in Listing 22. Listing 22. Job control with oozie HBase, a high-performance key-value store HBase is a high-performance key-value store. If your use case requires scalability and only requires the database equivalent of auto-commit transactions, HBase may well be the technology to ride. HBase is not a database. The name is unfortunate since to some, the term base implies database. It does do an excellent job for high-performance key-value stores. There is some overlap between the functionality of HBase, Informix, DB2 and other relational databases. For ACID transactions, full SQL compliance, and multiple indexes a traditional relational database is the obvious choice. This last code exercise is to give basic familiarity with HBASE. It is simple by design and in no way represents the scope of HBases functionality. Please use this example to understand some of the basic capabilities in HBase. HBase, The Definitive Guide, by Lars George, is mandatory reading if you plan to implement or reject HBase for your particular use case. This last example, shown in Listings 23 and 24, uses the REST interface provided with HBase to insert key-values into an HBase table. The test harness is curl based. Listing 23. Create an HBase table and insert a row Listing 24. Using the HBase REST interface Conclusion Wow, you made it to the end, well done This is just the beginning of understanding Hadoop and how it interacts with Informix and DB2. Here are some suggestions for your next steps. Take the examples shown previously and adapt them to your servers. Youll want to use small data since there isnt that much space in the virtual image. Get certified as an Hadoop Administrator. Visit the Cloudera site for courses and testing information. Get certified as a Hadoop Developer. Start up a cluster using the free edition of Cloudera Manager. Get started with IBM Big Sheets running on top of CDH4. Downloadable resources Related topicsMySQL Triggers: Auto-generate additional information in the database MySQL Triggers are one of the newer features in MySQL that are helping to make it a viable alternative for large enterprise applications. Not too long ago, those who made their livings using big commercial databases like Oracle and DB2 pointed out that MySQL was a nice, fast little database but lacked important feature like stored procedures, transactions, and triggers. As of version 5.0 of MySQL, these features can be crossed off of that list. So, what are MySQL triggers, and why does MySQLs ability to use them make it more attractive to serious database users Simply put, triggers are small programs that are stored in the database itself, and are activated by database events which often originate at the application layer. These precipitating database events are UPDATE, DELETE or INSERT queries. The trigger itself may execute before or after the query that initiates it. Triggers are often used to maintain the integrity of data across tables of an application. When a user on a website makes a purchase, for example, the first action that occurs in the database may be that a credit is inserted into an accounting table. By way of a trigger this action could initiate a chain reaction of events in other tables throughout the application. The product count of an item could be decremented in an inventory table, a debit deducted from a customers account balance in another table, a store credit applied to yet another table. You may say that you have been doing this all along in your applications using PHP or Perl or Python or ASP code. Whats the big deal about using MySQL triggers Well, there are some advantages to using triggers over application code for maintaining integrity of data across tables. A trigger generally performs the types of tasks described faster than application code, and and can be activated easily and quickly behind the scenes and does not need to be a part of your application code. This saves time and spares you from redundant coding. If you ever port your application to another language, chances are your triggers can stay in place without modification, along with your tables and other database objects. To demonstrate how MySQL triggers work, lets set up two simple tables on a database well call 8220salesrecords8221 that have data that is interdependent. Imagine a database that tracks the sales records of three salespeople at a department store. They work in the electronics department selling things like TVs. stereos, and MP3 players. We have the main table that keeps a record of each sale made. It records the amount of the sale (saleamt), the date (date), the name of the salesman (name), his id number (employeeid), and the product id (prodid). Well call this table (cleverly enough) 8220sales8221. In the second table, we want to keep some data that will allow us to easily keep track of how each salesperson is doing. It will include the salespersons id (employeeid), name (name), total number of sales (totalsales), and a column that keeps each salespersons average amount per sale (avesale). We want to see whos moving the high-end items. Well call this table 8220performance8221. Now comes the hard part. As I mentioned, triggers are database objects just as tables are. Triggers, however, are able to execute procedural code that modifies data in your tables. In this case, we want our trigger to fire before any INSERT statement that executes in the sales table. When a sale record is inserted in the sales table, the salespersons totals must be updated in the performance table. The following code can be typed in your favorite text editor and pasted into your konsole at the MySQL prompt. Before you do that though, you want to execute this line: Our procedural code uses semicolons at the end of statements, so we need to set a different delimiter to let MySQL know when our code block is over, and so that it doesnt stop processing our block when it hits a semicolon. Keep in mind that after you finish your block you will have to set the delimiter back to the semicolon, or end any subsequent commands with the new delimiter. For example if you made errors in your CREATE TRIGGER block and want to delete it, DROP TRIGGER wont work unless you set the delimiter back to the semicolon. Here is the code for the trigger: OK, lets talk about the code. Using the CREATE TRIGGER statement, weve initiated the trigger, naming it salesbitrg. MySQL triggers can fire before or after an INSERT, UPDATE or DELETE event. This one fires before any data is inserted in the sales table. The FOR EACH ROW clause signifies that the block will act on each row that meets the criteria of our SQL statements. The keywords BEGIN and END enclose the trigger statements that will execute when the trigger fires. There are two variables declared. The first is numrow which checks to see if the employee has who has made the sale that is to be entered, has had a sale entered in the performance table previously. If there are no employeeids that match, then this is the employees first sale, and this meets the ELSE condition of our 8220IF statement. This data will be entered as an insert in the performance table rather than an update. If the numrow is greater than 0, then the performance table will be updated. The second variable, totrows, is a count of how many sales the employee has in the sales table. This value is used to calculate the employees average sale. The count is being done before the sale is inserted in the sale table, so we have to add one to it. When the performance table is updated the average sale totalsales(totrows1). If our MySQL trigger is working correctly, the performance table will keep a running total of each salespersons total sales, and also the average amount of their total sales. It will do this independently of your application code and be portable to any application platform. To give it a whirl, insert some data into the sales table and monitor the content of the performance table. Here is the statement: Change the numbers and names and try it a few times. (Remember, an employee keeps the same employeeid number for each of his sales.) If youre feeling adventurous, start thinking about how the MySQL trigger would have to be extended to account for UPDATE and DELETE statements on the sales table. Free eBook Subscribe to my newsletter and get my ebook on Entity Relationship Modeling Principles as a free gift: What visitors say. I just stumbled accross your site looking for some normalization theory and I have to say it is fantastic. I have been in the database field for 10 years and I have never before come across such a useful site. Thank you for taking the time to put this site together.

Comments