De Petter Sam 3TI Hogeschool-Universiteit Brussel Academiejaar 2013-2014 Toegepaste Informatica Naam: De Petter Sam Klasgroep: 3 TI Studentennummer: r0341732 Vak: Stage 1 De Petter Sam 3TI Inhoudstafel Permissie .................................................................................................................................... 4 Voorwoord ................................................................................................................................. 5 Verklarende woordenlijst en gebruikte afkortingen .................................................................. 6 Deel 1: Algemene beschrijving van de stageopdracht ............................................................... 8 1.1 Inleiding ............................................................................................................................ 8 1.2 Accenture background ..................................................................................................... 8 1.3 Accenture, High performance. Delivered .......................................................................... 9 1.4 Beginsituatie project Big Data Challenge ....................................................................... 10 1.5 Doelstelling ..................................................................................................................... 11 Deel 2: Technische uitwerking ................................................................................................. 12 2.2 Fase 1 .............................................................................................................................. 13 2.2.1 Integratie.................................................................................................................. 13 2.2.2 Analyse ..................................................................................................................... 13 2.3 Fase 2 .............................................................................................................................. 15 2.3.1 Analyse ..................................................................................................................... 15 2.3.2 Visualisatie ............................................................................................................... 15 2.4 Fase 3 .............................................................................................................................. 15 2.4.1 Visualisatie ............................................................................................................... 15 Deel 3: Kritische SWOT-analyse van het resultaat ................................................................... 16 3.1 SWOT-analyse ................................................................................................................. 16 3.1.1 Strengths .................................................................................................................. 16 3.1.2 Weaknesses .............................................................................................................. 17 3.1.3 Opportunities ........................................................................................................... 18 3.1.4 Threats ..................................................................................................................... 18 Deel 4: Persoonlijk ontwikkelingsplan ..................................................................................... 19 4.1 Evaluatie student en stagementor ................................................................................. 19 2 De Petter Sam 3TI Deel 5: Bronnenoverzicht ......................................................................................................... 23 5.1 Werkschema ................................................................................................................... 24 5.2 PowerPointpresentatie 22/04/2014 .............................................................................. 26 5.3 PowerPointpresentatie 26/05/2014 .............................................................................. 36 5.4 Automatization JAR-file .................................................................................................. 40 5.5 Tableau installation & implementation .......................................................................... 74 5.6 Aqua TM Modelling ........................................................................................................ 95 3 De Petter Sam 3TI Permissie Ondergetekende verklaart dat de inhoud van dit project mag geraadpleegd en/of gereproduceerd worden, mits bronvermelding en overeenkomst met de auteur. 4 De Petter Sam 3TI Voorwoord Ik wil iedereen bedanken die mij geholpen en gesteund heeft de voorbije 3 jaar om mijn bachelorsdiploma Toegepaste Informatica te behalen. Hierbij denk ik vooral aan alle docenten die ik heb gehad de voorbije 3 jaar en vooral mijn opleidingshoofd Yvan Rooseleer waar ik steeds met mijn problemen terecht kon. Ik wil ook Philippe Schotte bedanken om mij te steunen met het big data project en de stage bij Accenture. Hierbij heeft ook Aimée Marécaux een belangrijke rol gespeeld. Zij is namelijk de PR-verantwoordelijke van Accenture. Ook wil ik Geert Vandendriessche bedanken om mij te helpen met het schrijven en verbeteren van dit verslag en mij steun te bieden tijdens mijn stage. 5 De Petter Sam 3TI Verklarende woordenlijst en gebruikte afkortingen A API Application Programming Interface (API). Verzameling van definities waarbij een computerprogramma kan communiceren met een ander programma of onderdeel (bibliotheken). Aqua TM Applicatie om predictive models te bouwen. Deze applicatie is geschreven door Spaanse werknemers van Accenture. B Big Data Big data is wanneer men met één of meerdere datasets werkt die te groot zijn om door DBMS-systemen onderhouden te worden. 1 BDC Staat voor Big Data Challenge. Afkorting wordt gebruikt bij Accenture. C Cloudera Inc. Amerikaans software-bedrijf dat Apache Hadoopsoftware, support & services aanbiedt. Clouder werd gebruikt als toepassing om op de server te draaien. Crontab Crontab of cronjob is een Unix commando dat een programma of script op een ingesteld tijdstip uitvoert. D DBMS Data Base Management System F Flume 1 Flume is een gedistribueerde, betrouwbare en beschikbare service voor het efficiënt verzamelen, samenvoegen en verplaatsen van grote hoeveelheden loggegevens. http://nl.wikipedia.org/wiki/Big_data 6 De Petter Sam 3TI H Hadoop Open-source software framework voor de opslag en grootschalige verwerking van datasets op clusters HDFS Hadoop Distributed File System R R Softwarepakket en programmeertaal ontwikkeld voor statistiek en data-analysedoeleinden. S SWOT Strengths, Weaknesses, Opportunities & Threats. Een analyse om de sterke en zwakke punten van nu te evalueren en de kansen en bedreigingen voor de toekomst te evalueren. 7 De Petter Sam 3TI Deel 1: Algemene beschrijving van de stageopdracht 1.1 Inleiding Tijdens het laatste semester van de opleiding Toegepaste Informatica worden de studenten verwacht om een stage van 15 weken af te leggen in een IT-bedrijf naar keuze. Na lang zoeken en veel afspraken gemaakt te hebben met potentiële bedrijven kreeg ik een mail van mevrouw Teerlinck - docent in de opleiding - waarin stond dat Accenture nog stagiairs zocht voor een project. Hier heb ik niet over getwijfeld en heb met Accenture onmiddellijk contact gelegd. Na een paar telefoongesprekken waarin ik (geheugen)testen moest afleggen, kreeg ik het goede nieuws dat ik mijn stage mocht beginnen bij Accenture. Van mevrouw Teerlinck kreeg ik te horen dat er de vorige jaren al stagiairs een vast contract hebben gekregen op het einde van hun stage. In dit verslag kan u lezen wat ik als stagiair de laatste 15 weken heb verwezenlijkt bij Accenture. 1.2 Accenture background 2 Accenture is een internationaal organisatieadviesbureau dat gevestigd is in 54 landen en meer dan 259 000 werknemers ter beschikking stelt. Het bedrijf heeft klanten in meer dan 120 landen. Accenture is één van ’s werelds grootste leidinggevende organisaties die management consulting, outsourcing en technologie verstrekken. In de BeLux heeft Accenture ongeveer 1100 werknemers tewerkgesteld. Hun top 100 klanten zijn al meer dan 5 jaar klant van Accenture, 92 ervan zijn al meer dan 10 jaar vaste klant! 2 bron: http://newsroom.accenture.com/fact+sheet/) 8 De Petter Sam 3TI In België heeft Accenture 2 vestigingen: één kantoor gevestigd in Vilvoorde, medialaan 36, en het hoofdkantoor in Brussel, Waterloolaan 16 (W16). Het project waar ik aan heb meegewerkt werd in Vilvoorde gegeven. Het kantoor in Vilvoorde is een alledaags kantoor. Het is niet zo groot maar het bezit wel alle technologische snufjes die een IT’er nodig heeft. De servers, laptops, TV-schermen en vergaderzalen waren in overvloed aanwezig. Het hoofdkantoor in Brussel is ook heel modern en best wel groot. De vergaderzalen zijn er 3 keer groter dan in Vilvoorde. Keuken, drankautomaten, tv’s, pc’s, tafels, ligzetels en noem maar op is ook daar in overvloed aanwezig. Het is duidelijk dat Accenture kapitaal bezit en deze wilt tonen naar hun werknemers toe. Een groot nadeel dat ik heb ondervonden is het aantal werknemers aanwezig op beide vestigingen. Door de verschillende rangen die aanwezig waren (CEO’s, bazen van een vestiging, gewone werknemers, ...) voelde ik mij onmiddellijk als een ‘nummer’ en niet als een werknemer/stagiair. Dit zorgde ervoor dat ik amper tot geen contact had met deze mensen, maar de relaties met de stagiairs wel versterkte. In het begin van mijn stage werd er mij meegedeeld dat ze werknemers zochten voor Big Data. Hiervoor werd vooral naar de stagiairs gekeken, aangezien wij de toekomstige werknemers kunnen zijn bij Accenture. Veel stagiairs hebben dan ook een stagecontract aangeboden gekregen. Aangezien ik volgend jaar zou willen verder studeren heb ik hen ook gezegd dat ik geen contract wil. 1.3 Accenture, High performance. Delivered De slogan van Accenture is “High performance. Delivered”. Hiermee wil men duidelijk maken dat Accenture een stap verder gaat dan de gewone adviesbureaus. Om dit te bereiken zorgen ze voor wekelijkse meetings om het teamverband tussen elkaar te behouden. Ook worden er tal van activiteiten gepland. Accenture plant een heleboel activiteiten na de werkuren om sociaal contact te bevorderen tussen de werkgevers en werknemers en hen ook een moment van rust te kunnen bieden. Er is een grote variatie in activiteiten. Zo zijn er bijvoorbeeld hackatons waar verschillende teams het tegen elkaar opnemen en in X aantal uur iets moeten verwezenlijken. Hier zijn dan natuurlijk ook mooie prijzen bij te winnen. Ook wordt er soms een LAN-party georganiseerd waar spellen worden gespeeld zoals CounterStrike, League Of Legends, Call Of Duty, … Accenture bezit heel veel werknemers die graag nog eens een goed schietspel spelen! Elke maand wordt er minstens één keer afgesproken in het hoofdkantoor met alle teamleden om te bespreken hoe het project verloopt. Hier wordt dan ook een hapje en een drankje aangeboden wat ook de stimulans van de werknemers bevordert. 9 De Petter Sam 3TI 1.4 Beginsituatie project Big Data Challenge In Vilvoorde waren we met 4 stagiairs die elk hun eigen project hadden. Elke stagiaire zat in een team met 3 andere werknemers van Accenture. Er was keuze uit 4 projecten die elk werden verwezenlijkt door Big Data: 1. Bepalen of films die in de cinema uitkwamen een succes zullen zijn of niet. Hiervoor werden de tweets van Twitter gebruikt. 2. Bepalen welke politieke partij(en) een grote kans had(den) om de verkiezingen van 25 mei 2014 te winnen. Hiervoor werden ook de tweets van Twitter gebruikt. 3. Bepalen waar ziektes en/of epidemieën een grote kans hebben om uit te breken. Hiervoor werden ook de tweets van Twitter gebruikt. 4. Het bepalen van metro-tijden. Iets gelijkaardigs wordt al gebruikt in de metro’s in Brussel. Hiervoor werd data van de MIVB gebruikt. Zoals u kan zien werd er vooral gebruik gemaakt van Twitter. Waarom hiervoor specifiek werd gekozen kan ik jammer genoeg niet meedelen maar de bedoeling is wel om in de toekomst toe meer verschillende sociale media te gebruiken zoals bijvoorbeeld Facebook, kranten, ... Een nieuwe term in de IT-wereld is Big Data. Als we dit letterlijk zouden vertalen, betekent dit ‘grote hoeveelheid gegevens’. Het principe is dan ook hetzelfde. Er wordt gewerkt met heel veel data om query’s en dergelijke op uit te voeren om dan een bepaald beeld te verkrijgen. In dit geval hebben wij gewerkt met de Twitter API om onze data te verkrijgen. Mijn team bestond uit volgende leden: Philippe Schotte Business Intelligence Consultant at Accenture Benoit Turbang PHP/Python programmeur Sam Beelprez Analytics Analyst, Management Consulting at Accenture 10 De Petter Sam 3TI 1.5 Doelstelling De bedoeling van deze projecten is om Big Data te leren gebruiken bij Accenture. Zij willen onderzoeken of er potentiële vraag is naar Big Data projecten bij hun klanten. Aangezien Accenture de kennis en toepassingen van Big Data nog niet bezit, werd ons gevraagd om aan de hand van een project aan te tonen dat Big Data wel degelijk kan gebruikt worden binnen het bedrijf. 11 De Petter Sam 3TI Deel 2: Technische uitwerking 2.1 Werkschema & timesheet Voor mijn stage begon bij Accenture heeft de rest van mijn team zich eerst bezig gehouden met de aanpak van het project. Zij hebben opgezocht welke programma’s en applicaties nodig zullen zijn om tot een visualisatie van het project te geraken. Eens mijn stage begon, werd het project verdeeld in 3 grote fasen: - Integratie Analyse Visualisatie Elke fase had een deadline. Bij deze deadline werd een presentatie gegeven door de stagiairs in W16. Hierbij werd er verteld wat we gedaan hebben, hoe we bepaalde onderwerpen hebben geïmplementeerd en of er bepaalde problemen zich voordeden. Deze presentaties kan u terugvinden in de bijlagen3. Elke fase werd onderverdeeld in verschillende deliverables. De deliverables worden hieronder uitgelegd en zijn terug te vinden in de bijlagen (deel werkschema pagina 1 en 2). Aangezien mijn project bestond uit Nederlands – en Franstalige tweets bestond, werden sommige deliverables aangepast aan de noden van het project. Deliverable ‘Revolution R’ werd niet uitgewerkt aangezien R zich baseert op data vanuit het verleden om hiermee de toekomst te voorspellen. 4 3 4 Zie bijlagen PPT-presentaties vanaf pagina 25. Verdeling van de fases. Bron: zie bijlagen pagina 24. 12 De Petter Sam 3TI 2.2 Fase 1 2.2.1 Integratie Deliverable 1 Connectie leggen met de cluster en data opvragen via verschillende woordenboeken. Hierbij werd Flume geïmplementeerd op de cluster om de data van Twitter te kunnen ophalen. We hebben voor Flume gekozen aangezien deze een flume-agent bezit waarbij men op trefwoorden kan zoeken en niet noodzakelijk op woordenboeken. Elke taal kan hierbij dus gebruikt worden. De flume-agent is speciaal gemaakt om de data via de Twitter API binnen te halen. Ook werd er ons gevraagd om met Python en PHP te leren werken aangezien er later zou gewerkt worden met de Rest API 5 van Twitter. Deliverable 2 Installatie van Revolution R. R is een programmeertaal waarbij data gebruikt wordt om grafieken te bouwen die een voorspelling (predictive model) meegeven. Belangrijk is wel dat er data aanwezig is waarop men zich kan baseren, bijvoorbeeld de data van een jaarlijks evenement. Aangezien mijn project over de verkiezingen van 2014 ging, had ik geen data om op te baseren. We kwamen dus tot de conclusie dat R niet bruikbaar is voor het project. De volgende deliverable is Aqua TM, een programma om ook predictive models te bouwen zoals R. Dit kon jammer genoeg nog niet gebruikt worden aangezien het programma zich tijdelijk in testfase bevond. Bij deze deliverable heb ik mij beziggehouden om R te leren, maar niet te implementeren in het project. Zie bijlagen voor meer info over R 6. 2.2.2 Analyse Deliverable 3 Aangezien R niet geïmplementeerd kon worden in het project werd Aqua TM gebruikt. In deze deliverable is het de bedoeling om Aqua TM te implementeren op de cluster en een predictive model te bouwen. Om het model te kunnen bouwen moet er eerst handmatig tweets gecategoriseerd worden. Elke categorie die aangemaakt wordt moet zo’n 400-tal gecategoriseerde tweets bevatten. Onze categorieën waren: - - 5 6 Useful: ja of nee. Hierbij wordt gekeken of de tweet over de politiek gaat of ofdat het eerder over een politicus of retweet ging. Indien het over de politiek gaat wordt deze tweet gecategoriseerd als ‘useful’ en zal deze ook bijgehouden worden. Sentiment: indien de tweet useful is, gaan we deze categoriseren volgens sentiment. Een tweet kan positief, neutraal of negatief zijn over iets of iemand. https://dev.twitter.com/docs/api zie bijlagen pagina 86 13 De Petter Sam 3TI Om dit te kunnen verwezenlijken moesten er meer dan 2000 tweets handmatig gecategoriseerd worden. Dit vergde veel tijd en geduld (3-4 weken), aangezien dit eentonig werk was. Eens dit gedaan was konden we de tweets inladen in Aqua TM en het model beginnen bouwen. Aangezien Aqua TM geschreven was voor Engelse en Spaanse tweets, lukte het ook hier niet om met Nederlandstalige en Franstalige tweets te werken. Na enige tijd werd er voor gezorgd door het team in Spanje dat ik mijn tweets kon gebruiken voor het model. In bijlagen7 vindt u een handleiding terug om Aqua TM te implementeren op de cluster. Aangezien deze deliverable één van de moeilijkste was, moest er een step-by-step handleiding geschreven worden voor Benoit en Philippe. In bijlagen onder Aqua TM modelling kan u deze terugvinden. Deliverable 4 8 Nu dat het model gebouwd is, is het ook de bedoeling dat de tweets in de toekomst automatisch worden getraind volgens het model. Hiervoor werd er een JAR-file geschreven. Aangezien het bijna twee jaar geleden was dat ik nog in JAVA geprogrammeerd had, werd er tijd voorzien om mijn kennis terug op te frissen. Uiteindelijk heb ik een JAR-file geschreven dat via SQL-query de data vanuit de tabellen neemt, deze laat trainen door het model en een waarde meegeeft voor de sentiment en sentimentscore. Indiende score 1 was, werd de tweet als positief bezien. Indien 0, is dit een neutrale tweet en -1 een negatieve tweet. De getrainde tweets worden opgeslagen in een Excel bestand (CSV) en opgeslagen op de server. Eens de getrainde tweets op de server staan, werd Tableau vernieuwd waardoor de visualisaties als zijnde ‘real-time’ zijn. Om dit te laten automatiseren schreef ik een script die ik dagelijks liet uitvoeren in crontab. Ik gebruikte crontab aangezien de servers op Linux draaien. Milestone: 22/04 7 8 Zie bijlagen Aqua TM pagina 48 Zie bijlagen JAR-file pagina 39 14 De Petter Sam 3TI 2.3 Fase 2 2.3.1 Analyse Deliverable 5 Installatie van Tableau9. Als eerste moet Tableau geïnstalleerd worden als applicatie op de computer. Eens gebeurd, maken we connectie met de data op de cluster. Tableau zorgt ervoor dat men visualisaties kan maken over bepaalde data. Om Tableau te gebruiken heeft men amper tot geen technologische kennis nodig. Het programma werkt volgens ‘drag & drop’. Dit betekent dat kolommen kunnen gesleept worden op de X en Y-as en dit tot een bepaalde grafiek zal leiden. Er werd ons gevraagd om een Tableau Cookbook te schrijven. Hierin wordt vermeld hoe men connecteert met Cloudera, welke grafieken men kan bouwen, uitleg over de verschillende grafieken, ... In bijlagen vindt u de Tableau Cookbook, pagina 58, terug met verschillende voorbeelden van grafieken en de uitleg per grafiek. 2.3.2 Visualisatie Deliverable 6 Het model dat werd gebruikt had een 70% waarschijnlijkheid. Dit is terug te vinden in Aqua TM. Dit vonden wij te weinig om verder mee te gaan. Het hele model werd opnieuw gemaakt met nieuwe en oude tweets die opnieuw werden gecategoriseerd. Hierna hadden wij een 81% waarschijnlijkheid. De visualisatie werd gefinetuned en de grafieken gaven een duidelijk beeld. Uit de grafieken was al reeds af te lezen wie de verkiezingen ging winnen. Milestone: 16/05 2.4 Fase 3 2.4.1 Visualisatie Deliverable 7 Deze fase heb ik voor gedurende 3 weken mee gedaan. Na de presentatie van 16 mei zijn we tot de conclusie gekomen dat de visualisaties complexer moeten zijn. verder heb ik hier niet veel kunnen bij helpen aangezien mijn stage ten einde liep. Deze presentatie wordt gedaan door de rest van het team. Milestone: 23/06 9 Tableau, http://www.tableausoftware.com/ 15 De Petter Sam 3TI Deel 3: Kritische SWOT-analyse van het resultaat 3.1 SWOT-analyse In deze SWOT-analyse vindt u aan de linkerzijde mijn mening terug over Accenture. Aan de rechterzijde vindt u de SWOT-analyse terug ten opzichte van mijn stage. Onder de prent vindt u meer uitleg over de begrippen in de SWOT-analyse. Accenture Stage STRENGTHS Leerkansen Wereldwijd # culturen Team richtlijnen STRENGTHS WEAKNESSES Tijdrovend Té strikt OPPORTUNITIES Jobs Nieuwe technologie Buitenlandse projecten WEAKNESSES # stagiairs Team # culturen richtlijnen THREATS OPPORTUNITIES THREATS Competitie Nieuwe technologie Buitenlands e projecten Eentonig Amper tot geen begeleiding Competitie Demotivatie Verplaatsing vestigingen 3.1.1 Strengths Accenture Veel leerkansen Bij Accenture willen ze hun werknemers continue laten bijleren. Hiervoor bieden ze workshops aan waarin nieuwe materie wordt besproken. Ook zijn er certificaten te behalen. Dit is een enorm pluspunt ten opzichte naar andere bedrijven toe. Wereldwijd Accenture is een internationaal bedrijf. We kunnen dus concluderen dat dit bedrijf stevig in hun schoenen staat. Multicultureel Aangezien Accenture internationaal gevestigd is zijn er veel culturen aanwezig. Zo heb ik samengewerkt met mensen van Spanje, Indië, Afrika, Frankrijk, ... Dit zorgt voor veel contacten in binnen- en buitenland. 16 De Petter Sam 3TI Teamverband Het hele project werd in groep afgelegd. Dit zorgt voor betere afwerking van het project, samen leren werken, ... ik moet wel toegeven dat dit soms niet aan de orde was bij ons project. Richtlijnen Binnen Accenture is alles volgens richtlijnen en regels. Hierdoor is alles klaar en duidelijk voor iedereen en weet men onmiddellijk wat er verwacht wordt. Teveel richtlijnen kan wel tot nadelen leiden (zie weaknesses: té strikt). Stage Verschillende stagiairs De stagiairs deden verschillende opleidingen op hogeschool of universiteit. Zo was er een stagiair die handelswetenschappen studeerde. Iemand anders studeerde Business Intelligence. Dit zorgde voor verschillende visies op het project aangezien iedereen een andere kijk had door de verschillende studies. 3.1.2 Weaknesses Accenture Tijdrovend Eens men bij Accenture werkt, wordt er verwacht dat Accenture uw leven is. Men verwacht dat de werknemers langer en meer werken dan wat er in het contract meegegeven is. Er worden vaak lange dagen geklopt bij Accenture zonder dat daar echt een zichtbare verandering is aan het loon. Té strikt Op alles waar richtlijnen op kunnen gebruikt worden, wordt ook gebruikt bij Accenture. Dit kan tot frustraties zorgen omdat alles volgens ‘het boekje’ moet gaan. Stage Eentonig Zoals reeds vermeld bij deliverable 3, waren sommige delen in het project eentonig. Dit zorgde ervoor dat ik snel werd afgeleid en het soms langer duurde om iets te verwezenlijken. Een oplossing hierbij zou zijn om het eentonige werk van de tweets te verdelen onder de teamleden. Dit werd niet gedaan waardoor ikzelf alles manueel heb moeten doen. Amper tot geen begeleiding Aangezien mijn team bestond uit werknemers die zelf met projecten bezig waren, hoorde ik vaak mijn teamleden niet. 17 De Petter Sam 3TI 3.1.3 Opportunities Accenture Jobs (job opportuniteit) Aangezien Accenture steeds bezig is met nieuwe technologieën te implementeren zorgt dit ervoor dat er job opportuniteiten bijkomen. Aan de stagiairs werden er ook contracten aangeboden. Nieuwe technologieën Accenture biedt continue bijlessen aan waardoor wij over nieuwe technologieën kunnen leren. Werknemers blijven niet bij de pakken zitten aangezien zij ook deze technologieën aangeleerd krijgen. Buitenlandse projecten Er worden veel projecten gestart in België die naarmate van tijd vaak in het buitenland worden verdergezet. Dit zorgt ook voor afwisseling in het dagelijkse werkleven wat ikzelf wel iets positief vindt. Stage Zie ‘nieuwe technologieën’ en ‘buitenlandse projecten’ bij 3.1.3 Opportunities. 3.1.4 Threats Accenture Competitie Iedereen streefde naar een contract van Accenture waardoor de samenwerking in gedrang kwam. Iedereen wou zich bewijzen ten opzichte van elkaar om het beter te kunnen doen dan de anderen. Dit zorgde ervoor dat er eerder groepen ontstonden onder elkaar in plaats van met zijn allen samen te werken. Stage Zie ‘competitie’ Threats Accenture Demotivatie Aangezien er competitie was, werd ik gedemotiveerd om nog deftig te kunnen samenwerken met de anderen en mij volledig over het project te ontfermen. Dit is na verloop wel verminderd en had ik weer meer zin in mijn stage. Verplaatsing tussen vestigingen Vaak werd er verwacht dat de stagiairs zich verplaatsten van Vilvoorde naar Brussel. Dit was soms moeilijk voor ons aangezien er niet altijd voor vervoer werd gezorgd door Accenture. Misschien is dit iets om rekening mee te houden naar de volgende stagiairs toe. 18 De Petter Sam 3TI Deel 4: Persoonlijk ontwikkelingsplan 4.1 Evaluatie student en stagementor hieronder vindt u de feedback terug van mezelf en van mijn stagementor. In de kolom ‘competentie’ vindt u de competenties terug die voor ons het belangrijkste leken. De tweede kolom geeft uitleg over mijn eigen feedback en de derde kolom is de feedback van de stagementor. De schaalverdeling verloopt van 1 tot 3: 1 = onvoldoende, negatief / 2 = voldoende, neutraal / 3 = goed, positief. Het volledige verslag kan u terugvinden in de bijlagen en via mevrouw Teerlinck en mijnheer Vandendriessche. In dit verslag wordt er vermeld wat de opdracht inhield en waarom dit gedaan werd volgens de visie van mijn stagementor. Competentie 1. Actief communiceren in drie talen (mondeling en schriftelijk) Self Input Student (Begin – Einde) Evaluatie Stagementor Score: 3. Communicatie verloopt bij Accenture altijd in het Engels. Er kan wel ook gecommuniceerd worden in het Frans en Nederlands. Met de andere stagiairs wordt er meestal in het Nederlands gecommuniceerd tenzij het met Stéphane, Robert of Linur is. Zij spreken Frans en Engels. Hierbij spreken we dan ook vaak in het Engels zodat we elkaar het beste kunnen verstaan. Sam is uiterst sociaal en assertief. Hij communiceert verbaal zeer vloeiend in het Nederlands en het Engels. Hij heeft een zeer directe stijl van communiceren en is altijd zeer duidelijk. Dit zijn eigenschappen die onontbeerlijk zijn in een internationale en competitieve context. Score: 3. We zijn hechter geworden aan elkaar en we kunnen eenvoudig vragen aan elkaar stellen indien iemand vast zit. Er wordt al veel meer gewerkt in groepsverband. Sam moet wel nog meer letten op de vorm/structuur van zijn communicatie. Zijn schriftelijke verslagen/statusrapporten zijn meestal eerder ongestructureerd en vaak zeer informeel. Score: 3 19 De Petter Sam 2. Relaties met collega’s, opdrachtgevers en/of klanten onderhouden 3TI Score 2. Elke dag zitten we samen met alle stagiairs. Ook zijn er vaak conference calls met de collega’s en stagebegeleiders. Ook kan er rap contact gemaakt worden met andere werknemers indien er zich een probleem voor doet en dergelijke. Ik probeer dan ook zo vaak mogelijk meetings te hebben met de teammembers en stagebegeleider. Score 3. De relatie tussen elkaar vind ik toch al beter. Er is meer interactie tussen de stagiairs. Sam is een zeer sociaal en communicatief persoon, en was dus snel geïntegreerd in de groep. We hebben echter een wat mindere motivatie gemerkt bij Sam ten opzichte van de rest van de groep waardoor de relatie met de andere stagairs niet altijd even vlot bleef verlopen. Tegen het einde van de stage zagen we wel een gunstige evolutie en was Sam weer in staat om volop mee te werken aan de laatste deliverable. Score 3 3. Gegevens verzamelen, opslaan en ter beschikking stellen zodat deze op een correcte en gebruiksvriendelijke Score: 1. Ik vergeet heel vaak gegevens te verzamelen en publiekelijk open te stellen. Ik gebruik wel vaak de handleidingen van andere collega’s en stagiairs. Hier zal ik eens werk van moeten maken. Sam had inderdaad moeite met het verzamelen en publiceren van gegevens. Dit was essentieel in de beginfase van de stage, daar we met nieuwe technologie werkten 20 De Petter Sam 3TI Score 3. Wekelijks schrijf ik een manier kunnen worden opgevraagd kort verslag over wat ik gedaan heb. Ook zal ik binnenkort een verslag schrijven over wat we gedaan hebben als project, hoe het werkt en welke commando’s en dergelijke we gebruikt hebben. Ik ben begonnen met een stageverslag te schrijven over Accenture, welke onderwerpen we gezien hebben en wat ik heb bijgeleerd. Dit zal ik doorsturen eens het af is zodat u deze kan nalezen. en er veel zelfstudie gedaan moest worden door iedereen. Score: 1. Er is amper tot geen planning opgesteld voor de case, dit vind ik wel een jammere zaak. Ook wordt er niet echt in groep gewerkt. Het is eerder ieder voor zijn eigen. Het is wel goed dat de andere stagiairs wel vaak kunnen helpen indien er een vraag of probleem is. Misschien is het wel belangrijk om een planning van het team op te stellen waar iedereen aan kan en zo beter weet wat er verwacht wordt van elkaar. Sam was niet altijd op de hoogte van de gestelde milestones/deadlines. Met de hulp van zijn collega’s was hij toch in staat om tijdig de gevraagde deliverables te produceren. 4. Een IT-opdracht projectmatig en teamgericht aanpakken met respect voor de planning Naar het einde van de stage lukte het wel beter en werkte hij actief mee aan de creatie van een handleiding voor de visualisatie tool Tableau. Score 2 Hij had echter moeite om op regelmatige tijdstippen een status te geven aan de rest van het team/stagementor. Na verloop van tijd slaagde Sam er echter in een beter overzicht te geven van zijn activiteiten/resultaten. Score 2. Er wordt minstens 1 keer per maand een ‘hackaton’ georganiseerd waar iedereen Score 2 tezamen komt en uitleg wordt gegeven over nieuwe applicaties en dergelijke. Ook kan er vragen gesteld worden en wordt er samen gewerkt aan het project. Het jammere is dat dit vaak laat ’s avonds is (tussen 18-22u) 21 De Petter Sam 3TI waardoor ik niet altijd aanwezig kan zijn. 5. IT-taken kwaliteitsvol uitvoeren zodat het resultaat voldoet aan de eisen van een steeds wisselende omgeving Score: 2. Aangezien Big Data iets recent is, zal dit nog vele jaren kunnen draaien in de omgeving waar het zich nu bevindt. Het is interessant om over Big Data te leren aangezien dit in paar maanden/jaren het nieuwe ding gaat worden. Score 2. Het is en blijft een nieuw onderwerp waar ik steeds nieuwe termen bijleer. Jammer genoeg blijf ik steeds errors ontdekken en vastzitten bij sommige opdrachten die veel tijd in beslag nemen. Alles zou vlugger gaan indien dit niet gebeurde. Het klopt dat we met nieuwe technologie werken en dat Sam soms moeilijkheden had om zelfstandig problemen op te lossen. Hij zorgde er echter wel altijd voor dat hij het gevraagde resultaat kon bereiken en dit door beroep te doen op de hulp van zijn collega’s. Score 2 22 De Petter Sam 3TI Deel 5: Bronnenoverzicht Onderstaande bijlagen zijn (meestal) in het Engels geschreven wegens de communicatie binnen Accenture. De bijlagen zijn geschreven door de stagiairs. We werden verantwoordelijk gesteld om zelf documentatie te schrijven over hoe men bepaalde onderwerpen implementeerden. Dit zorgde ervoor dat anderen (externen die niet met het project bezig zijn) onmiddellijk kunnen inpikken met ons project. De bijlagen zijn ook geschreven als zijnde ‘cookbooks’ of ‘guides’ 23 De Petter Sam 5.1 Werkschema Phase 1 – 3TI Data 24/03 – 18/04 Deliverable 1 – Integrate generic sentiment asset Design and build a solution based on one of the existing Cloudera clusters that can perform sentiment analysis based on keywords using an English, French and Dutch dictionary. •Supported by a SME •Aqua TM tool from Neometrics •Responsible: Antoon Van Olmen – Deliverable 2 - Install and configure Revolution R Install and configure Revolution R on a cluster, and ensure it can run distributed across all nodes. Do a performance comparison between a local R script and a cluster R script. •Responsible: Erik Poelmans + Interns – Deliverable 3 - Write Functional Design of analytical model Write a functional design of an analytical model: it should contain a description of your predicting and predictor variables, an example data set of 50 cases where both predicting and predictor variables are filled in, an initial model and a first evaluation of your initial model. •Supported by a SME •Analysts in each team, under responsibility of the team lead – Deliverable 4 - Build additional data sourcing Source the additional data that is required to perform your full analysis on real data. •Team 1 and Team 4 can work together in sourcing the weather data. •Analysts in each team, under responsibility of the team lead – Milestone: Presentation on 22/04 Stageverslag Accenture 24 De Petter Sam Phase 2 – 3TI 21/04 – 16/05 Deliverable 5 - Build one generic visualization asset Install and configure Tableau client on your desktop and connect to one cluster. Setup 3 different kinds of interactive visualizations. Deploy these visualizations to one iPad. In the last week, deploy these visualizations configurations to all clusters. •Based on Tableau: License available •Responsible: Philippe Schotte – Deliverable 6 - Deploy and fine-tune analytical model Deploy the basic analytical model into your cluster. Launch the analytical model on a larger test set. Iterate your model and create a new model if required if it has better predictions. Iterate and fine-tune •Supported by a SME •Analysts in each team, under responsibility of the team lead – Milestone: Presentation on 16/05 Updated timeline Stageverslag Accenture 25 De Petter Sam 3TI 5.2 PowerPointpresentatie 22/04/2014 BDC Sentiment Analysis Introduction Introduction – Team Team Belgium • Responsible: Antoon Van Olmen • Day-to-day lead: Thomas Gérard • Team: Stéphane Elias de Souza, Sam De Petter, Jochen De Bie Copyright © 2013 Accenture All rights reserved. Stageverslag Accenture Team Spain • Functional: Marta Balbás Gambra • Technical: Alejandro Batalla Mier 3 26 De Petter Sam 3TI Introduction – Sentiment Analysis • • • Determine author attitude – Judgment or evaluation – Affective state – Intended emotion Humans raters agree 79% of the time Aqua Text Mining – Neo Metrics Analytics S.L. – Accenture asset since April 10, 2012 4 Copyright © 2013 Accenture All rights reserved. Introduction – Goals Implementation • Distributed computing • Implementation guide Optimization • Fine-tuning of model parameters Automation Copyright © 2013 Accenture All rights reserved. • Process automation 5 Contents • • • • Introduction (Jochen) Theory (Sam) – Sentiment analysis – Aqua Text Mining Demo (Jochen) Results – Achievements – Limits • Conclusion • Q&A Copyright © 2013 Accenture All rights reserved. Stageverslag Accenture 6 27 De Petter Sam 3TI Theory Theory • Sentiment Analysis – – NLP • What? • Why? • Problems ? • Conclusion Analytic model Copyright © 2013 Accenture All rights reserved. 8 NLP • What? – NLP = Natural Language Processing – Ability of computer program to understand human speech Why? – Analyze terms/words/docs/… – Predict part-of-speech tags Copyright © 2013 Accenture All rights reserved. Stageverslag Accenture 9 28 De Petter Sam 3TI NLP • Problems – Linguistic variation • – Example: He ate the chocolates on the plane • he ate the chocolates that were on the plane • he ate the chocolates when he was flying in the plane Ambiguity • Example: Paul was reading a newspaper in the bank • Financial institution • Mound Copyright © 2013 Accenture All rights reserved. 10 NLP • Conclusion – Design & build computer systems – Analyze French, Dutch & English – Generate outputs in natural language Copyright © 2013 Accenture All rights reserved. 11 Analytical Model • Mathematical model predict behavior Copyright © 2013 Accenture All rights reserved. Stageverslag Accenture 12 29 De Petter Sam 3TI Theory • Aqua Text Mining • What is it? • prerequisites • Some Few concepts • Conclusion – Text to vectors – Analytic model Copyright © 2013 Accenture All rights reserved. 13 Theory • What is it for? Can capture customers behaviors, brands, social media buzzes and so on... Recognizing & categorizing random topics Copyright © 2013 Accenture All rights reserved. 14 Theory • Some few concepts • Document: piece of text • Corpus: set of documents. • Target: the criteria of the classification, for instance the sentiment of documents. • Target Values: possible values of the targets, commonly the categories into which documents can be sorted in. • Attributes: additional information related to the documents different from the text itself, e.g. author information, dates, locations, etc. • Classification model: mathematical algorithm will help classifying documents in categories according to targets values. • Training set: sample of documents with the target annotated to train the model • Test set: sample of documents with the target annotated to validate the model. • Rules: set of rules on the text or the attributes, that will assign probabilities of the documents to belong to categories. Copyright © 2013 Accenture All rights reserved. Stageverslag Accenture 15 30 De Petter Sam 3TI Theory • The architecture Database Web app App server JDBC HTTP Third party systems Hadoop Mahout Map-reduce HDFS Copyright © 2013 Accenture All rights reserved. • • Services • • Document management systems Claims systems Email systems Etc 16 Demo Theory • How it works • Create a corpus • Create a target Copyright © 2013 Accenture All rights reserved. Stageverslag Accenture 18 31 De Petter Sam 3TI Theory • Create a model with parameters • Manually classified documents are loaded into the software thanks to the AquaTM-client. java -jar aquatm-client.jar -mt updateCorpus -rs http:// http://172.20.1.47:8080/ /aquatm-console/services/DocumentsService -xp file:/PATH Copyright © 2013 Accenture All rights reserved. 19 Theory • Train the model • Evaluate the data !!put visual!! Copyright © 2013 Accenture All rights reserved. 20 Results Stageverslag Accenture 32 De Petter Sam 3TI Results • Results – Graphs with metrics Achievements • Implementation guides & way implemented • Automation Limits • Language • Collation settings (utf8) Copyright © 2013 Accenture All rights reserved. 22 Results – Graphs with metrics • Accumulated lift Shows effectiveness of a predictive model • Accumulated percentage of response captured How much our data is reliable • Roc(Receiver Operating Characteristic) area curve Copyright © 2013 Accenture All rights reserved. 23 Results – Reports • Evaluation Results (Quality check) – training time for 3000 documents – check the number of train and test documents • Corpus report • Model associated to corpus • List of attributes of a corpus Copyright © 2013 Accenture All rights reserved. Stageverslag Accenture 24 33 De Petter Sam 3TI Conclusion Conclusion • Evaluation AquaTM – Pro & Contra • Documentation • Ease of usage • Reliability of the results • Reports • Bugs when training documents and collation • Processing time Copyright © 2013 Accenture All rights reserved. 26 Conclusion • Lessons learned – Separate documents of different languages – Smileys to words – No retweeted tweets but original messages Copyright © 2013 Accenture All rights reserved. Stageverslag Accenture 27 34 De Petter Sam 3TI Sources • NLP • http://www.mind.ilstu.edu/curriculum/protothinker/natural_language_processing.php • http://searchcontentmanagement.techtarget.com/definition/natural-language-processing-NLP • http://www.upf.edu/hipertextnet/en/numero-5/pln.html • http://www-i6.informatik.rwth-aachen.de/web/Research/nat_lang_proc.html • Analytical Model • http://serc.carleton.edu/introgeo/mathstatmodels/Analytical.html • http://www.researchgate.net/publication/2659642_Analytical_Modeling/file/79e415109b3f046e82.pdf • Results • Kickoff materials • http://www2.cs.uregina.ca/~dbd/cs831/notes/lift_chart/lift_chart.html • http://gim.unmc.edu/dxtests/roc2.htm • http://en.wikipedia.org/wiki/Apache_Tomcat • http://tomcat.apache.org/ • http://en.wikipedia.org/wiki/Apache_Mahout • https://mahout.apache.org/ Copyright © 2013 Accenture All rights reserved. 28 Q&A Stageverslag Accenture 35 De Petter Sam 3TI 5.3 PowerPointpresentatie 26/05/2014 Big Data Challenge 26th of May Table of content • Datasourcing • Sentiment analysis • Data integration • Data visualization 2 Datasourcing • Implement flume agent -> add keywords! • Choose PATH to save tmp files and how often (month, day,hour, …) • Create external table with partitions which gets data from PATH you chose SDP1 • Run HIVE-script that creates partitions (every day, hour, …) automatization with Oozie • Started 1st of April. About 2000 tweets per day. This weekend increase to 5000 tweets 3 Stageverslag Accenture 36 De Petter Sam 3TI Sentiment analysis • Install AquaTM on cluster or node • Manually categorize tweets (400-500 per category) • Create tweets XML file • Add attributes, targets and corpus in Aqua TM, import the documents • Create model and train • IF succesful, the model will be trained 4 Positive ROC: 0,80 Note: this will only create the model, the tweets are not yet evaluated! Stageverslag Accenture Negative ROC: 0,80 5 37 De Petter Sam 3TI Example • Neutral tweet • “Guy Verhofstadt verdient 260.000 euro bovenop zijn salaris” • Positive tweet • “Verandering voor vooruitgang begint bij @AnnickDeRidder! Antwerpen, stem Vlaams, stem N-VA!” 6 Data integration • Create external table ‘evaluatedtweets’, include columns sentiment/sentimentscore SDP2 • Create jar file that will evaluate the tweets • Run jar file with timestamp to evaluate, this will create a CSV file • Put CSV file in specified PATH with Hadoop Tweets table NL/FR/DE/IT/… Stageverslag Accenture Evaluated Tweets table NL Politicians table NL 7 38 De Petter Sam 3TI Data integration (extra) • Create external table Politicians SDP3 • Add CSV file in HDFS • Load CSV file in table Politicians SDP4 • Create (cross) joins with table evaluatedTweets for graphs Note: I created a new table to do joins for creating other graphs in Tableau 8 Data visualization • Connect Tableau with Cloudera (see Tableau cookBook) • Create graphs (see Tableau) • Only dutch tweets are used 9 Stageverslag Accenture 39 De Petter Sam 3TI 5.4 Automatization JAR-file Hieronder vindt u de code terug zoals besproken in deliverable 4, pagina 13 package com.accenture.aqua.test; import org.apache.log4j.Logger; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import import import import import import import com.neometrics.ia.aquatm.ws.service.RemoteDocumentsService; com.neometrics.ia.aquatm.ws.vo.AttributeReq; com.neometrics.ia.aquatm.ws.vo.CorpusReq; com.neometrics.ia.aquatm.ws.vo.DocumentEvalRequest; com.neometrics.ia.aquatm.ws.vo.DocumentEvalResponse; com.neometrics.ia.aquatm.ws.vo.DocumentReq; com.neometrics.ia.aquatm.ws.vo.TargetEval; import import import import import import import import import import java.io.FileWriter; java.io.IOException; java.sql.SQLException; java.sql.Connection; java.sql.ResultSet; java.sql.Statement; java.sql.DriverManager; java.util.ArrayList; java.util.Collection; java.util.Collections; /** * Class to test AquaTM client. */ public class Test { private static String driverName = "org.apache.hive.jdbc.HiveDriver"; /** * Remote service. */ protected static RemoteDocumentsService documentsService = new RemoteDocumentsService(); /** * Url del servicio remoto. */ protected String remoteService = "http://172.20.1.87:8080/aquatmconsole/services/DocumentsService"; /** * Namespace. */ protected String namespaceURI = "http://ws.web.console.aquatm.ia.neometrics.com"; /** * Logger. */ public static String date = ""; Stageverslag protected Accenture static final Logger log = Logger.getLogger(Test.class); /** * Init web service. */ public void init() { 40 De Petter Sam 3TI protected static final Logger log = Logger.getLogger(Test.class); /** * Init web service. */ public void init() { documentsService.setAuthenticationRequired(true); documentsService .setAuthentication(new UsernamePasswordAuthenticationToken( "adminTm", "neo")); documentsService.setRemoteService(remoteService); documentsService.setNamespaceURI(namespaceURI); documentsService.setTimeOutInMilliSeconds(60000); } /** * Test de servicio remoto de evaluación de nuevos documentos AquaTM */ public void testRemoteDocumentsServiceEvaluate() { DocumentEvalRequest docEvalRequest = new DocumentEvalRequest(); // Add important attributes. examples: author, gender, publish_date... AttributeReq attribute = new AttributeReq("date", "vandaag"); AttributeReq attribute2 = new AttributeReq("id_twitter", "2879823758375"); // Create a batch of documents between [100,500] before call AquaTM // evaluation process. DocumentReq negativeDocument = new DocumentReq("negativeDocument", "This is a negative tweet about Politics.", new AttributeReq[] { attribute, attribute2 }); DocumentReq positiveDocument = new DocumentReq("positiveDocument", "This is a positive tweet about Politics.", null); docEvalRequest.setDocumentsEval(new DocumentReq[] { negativeDocument, positiveDocument }); // Select corpus for documents. docEvalRequest.setCorpus(new CorpusReq("PoliticianTweets")); .evaluateMemory(docEvalRequest); Stageverslag Accenture if (evalResponses == null) { log.error("Service not found, see log file "); 41 De Petter Sam 3TI docEvalRequest.setDocumentsEval(new DocumentReq[] { negativeDocument, positiveDocument }); // Select corpus for documents. docEvalRequest.setCorpus(new CorpusReq("PoliticianTweets")); // Select targets to evaluate the documents. If null all targets from // corpus. TargetEval target = new TargetEval("sentiment", null); docEvalRequest.setTargets(new TargetEval[] { target }); // Use evaluate memory for performance. Don´t save documents on // database. DocumentEvalResponse[] evalResponses = documentsService .evaluateMemory(docEvalRequest); if (evalResponses == null) { log.error("Service not found, see log file "); return; } // Treat Aqua tm responses. for (DocumentEvalResponse documentEvalResponse : evalResponses) { TargetEval[] targetsz = documentEvalResponse.getTargets(); log.debug(targetsz[1].getPredictedValue()); // Error response. if (documentEvalResponse.getStatus() != null) { log.error(documentEvalResponse.getDocumentName() + '\n' + documentEvalResponse.getCode() + ":" + documentEvalResponse.getStatus()); } else { // Good response. ;) log.debug(documentEvalResponse.getDocumentName() + '\n' + documentEvalResponse.toString()); } } } /** * Main code to test remote aquatm client calls. * * @param args * no args. */ Stageverslag Accenture 42 De Petter Sam 3TI public static void main(String[] args) { try { Class.forName(driverName); date = args[0]; } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); System.exit(1); } try { Test test = new Test(); // Configure remote service. test.init(); Connection con = DriverManager.getConnection( "jdbc:hive2://172.20.1.86:10000/default", "admin", "admin"); Statement stmt = con.createStatement(); stmt.execute("ADD JAR /home/sam.depetter/serde/hive-serdes-1.0SNAPSHOT.jar"); ResultSet rset = stmt .executeQuery("SELECT id,created_at,text FROM tweets WHERE date = " + date); DocumentEvalRequest docEvalRequest = new DocumentEvalRequest(); ArrayList<DocumentReq> allDocuments = new ArrayList<DocumentReq>(); while (rset.next()) { AttributeReq attributeDate = new AttributeReq("date", rset.getString(2)); AttributeReq attributeID = new AttributeReq("id_twitter", rset.getString(1)); // Create a batch of documents between [100,500] before call // AquaTM // evaluation process. if (rset.getString(3) != null) { DocumentReq document = new DocumentReq(rset.getString(1), rset.getString(3), new AttributeReq[] { attributeDate, attributeID }); allDocuments.add(document); } Stageverslag Accenture 43 De Petter Sam 3TI } ArrayList<DocumentReq> evaluationDocuments = new ArrayList<DocumentReq>(); log.debug("go"); int k = 0; ArrayList<Tweet> evaluatedTweets = new ArrayList<Tweet>(); for (int i = 0; i <= allDocuments.size() - 1; i++) { evaluationDocuments.add(allDocuments.get(i)); // evaluate now if (i != 1 && i != 0 && (i % 200 == 0 || i == allDocuments.size() 1)) { docEvalRequest.setDocumentsEval(evaluationDocuments); docEvalRequest.setCorpus(new CorpusReq("PoliticianTweets")); // Select targets to evaluate the documents. If null all // targets from // corpus. TargetEval targetRelated = new TargetEval("useful", null); TargetEval targetSentiment = new TargetEval("sentiment", null); docEvalRequest.setTargets(new TargetEval[] { targetRelated, targetSentiment }); DocumentEvalResponse[] evalResponses = documentsService .evaluateMemory(docEvalRequest); if (evalResponses == null) { log.error("Service not found, see log file "); return; } Stageverslag Accenture 44 De Petter Sam 3TI // Treat Aqua tm responses. for (DocumentEvalResponse documentEvalResponse : evalResponses) { k++; log.debug(k); // Error response. if (documentEvalResponse.getStatus() != null) { log.error(documentEvalResponse.getDocumentName() + '\n' + documentEvalResponse.getCode() + ":" + documentEvalResponse.getStatus()); } else { // Good response. ;) // ArrayList<TargetEval> evaluations = new // ArrayList<TargetEval>(); TargetEval[] evaluations = documentEvalResponse .getTargets(); if (evaluations[0].getPredictedValue() < evaluations[1] .getPredictedValue()) { Tweet tweet = new Tweet(); tweet.id = documentEvalResponse .getDocumentName(); tweet.text = allDocuments.get(k 1).getText(); tweet.created_at = allDocuments.get(k - 1) .getAttributes()[0].getStringValue(); ArrayList<Double> valuesList = new ArrayList<Double>(); for (int j = 2; j <= 4; j++) { valuesList.add(evaluations[j] .getPredictedValue()); } Stageverslag Accenture 45 De Petter Sam 3TI Double maxValue = Collections.max(valuesList); int index = valuesList.indexOf(maxValue) + 2; tweet.sentiment = evaluations[index] .getTargetValue(); if (tweet.sentiment.equals("positive")) { tweet.sentimentScore = 1; } if (tweet.sentiment.equals("neutral")) { tweet.sentimentScore = 0; } if (tweet.sentiment.equals("negative")) { tweet.sentimentScore = -1; } evaluatedTweets.add(tweet); } // log.debug(documentEvalResponse.getDocumentName()+ // '\n' + documentEvalResponse); } } // empty evaluationDoc evaluationDocuments.clear(); } } // convert tweets to CSV try { FileWriter writer = new FileWriter("user/sam.depetter/evaluatedTweets/" + date + ".csv"); // FileWriter writer = new // FileWriter("C:\\Users\\sam.depetter\\Desktop\\" + date + // ".csv"); Stageverslag Accenture 46 De Petter Sam 3TI for (Tweet tweet : evaluatedTweets) { writer.append(tweet.getId()); writer.append('\t'); writer.append(tweet.getCreated_at()); writer.append('\t'); writer.append(tweet.getText()); writer.append('\t'); writer.append(tweet.getSentiment()); writer.append('\t'); writer.append(String.valueOf(tweet.getSentimentScore())); writer.append('\n'); } // generate whatever data you want writer.flush(); writer.close(); } catch (IOException e) { e.printStackTrace(); } log.debug("done"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } // launch error evaluateO. // test.testErrorRemoteDocumentsServiceEvaluate(); } } Stageverslag Accenture 47 Big Data Challenge: Aqua Text Mining implementation guide Stageverslag Accenture 48 De Petter Sam 3TI Table of Contents Modification / Revision Log .................................................................................................. 49 Sources................................................................................................................................ 50 Executive Summary ............................................................................................................. 51 Prerequisites ................................................................................................................. 51 Implementation guide........................................................................................................... 53 1 Preparation................................................................................................................. 53 Move MySQL to /hdfs_data/ partition............................................................................53 2 Installing Mahout ........................................................................................................ 54 Install Cloudera CDH5 yum repository..........................................................................54 Install Mahout ...............................................................................................................54 3 Installing Tomcat .......................................................................................................55 Install Apache Tomcat 7.0.52 ......................................................................................55 Make Tomcat start on system boot ..............................................................................58 Connect Tomcat with MySQL ......................................................................................60 4 Installing AquaTM .....................................................................................................61 Install AquaTM .............................................................................................................61 Install additional language packs (nl,fr) - OPTIONAL ................................................. 22 Stageverslag Accenture 49 De Petter Sam 3TI Modification / Revision Log AUTHOR (S) Name Function Date Sam De Petter Intern 23/04/2014 Name Function Date Jochen De Bie Intern 23/04/2014 REVIEWED BY HISTORY Date Version Evolution Name 23/04/2014 v1.0 First version Sam De Petter Stageverslag Accenture 50 De Petter Sam 3TI Sources Cloudera. (2014). Mahout Installation. Retrieved from CDH 5 Installation Guide: https://www.cloudera.com/content/cloudera-content/clouderadocs/CDH5/latest/CDH5- Installation-Guide/cdh5ig_mahout_installation.html Ghedini, D. (2013, November 13). Install Tomcat 7 on CentOS, RHEL, or Fedora. Retrieved from David Ghedini: http://www.davidghedini.com/pg/entry/install_tomcat_7_on_centos Kumar RJ, V. (2013, April 1). [SQOOP-975] Sqoop2: Port conflict problems in tomcat. Retrieved from Apache's JIRA issue tracker: https://issues.apache.org/jira/browse/SQOOP-975 Kumar, R. (2014, March 31). How To Install Tomcat 7.0.53 Server on CentOS & RedHat 6/5. Retrieved from Tecadmin.net: http://tecadmin.net/steps-to-install-tomcatserver-on-centos- rhel/ MuleSoft. (n.d.). Tomcat MySQL Connection - Using JDBC to Connect Tomcat to MySQL. Retrieved from MuleSoft: https://www.mulesoft.com/tcat/tomcat-mysql The Apache Software Foundation. (2014). Quickstart. Retrieved from Apache Mahout: Scalabe machine learning and data mining: http://mahout.apache.org/users/basics/quickstart.html Stageverslag Accenture 51 De Petter Sam 3TI Executive Summary The goal of this document is to guide the reader through the installation process of the Aqua Text Mining application (further AquaTM). Next to the actual implementation of this application, also the procedures to install prerequisites Tomcat and Mahout are described. Aqua Text Mining is a text mining tool which has the classification of documents into distinguished categories as its main goal. In the Big Data Challenge cases we are installing the tool to classify Twitter-messages according to their sentimental value and thus to do sentiment analysis on them. In this guide, version 3.0 of AquaTM will be installed. This is at the moment of creation of this document the most recent version. We are installing this version because it proves to be working better than previous versions, although it is still a little unstable and not completely finished. More information on the tool can be found in the user manual. Prerequisites The installation and implementation as it is demonstrated in this guide has been executed on a server running the Cloudera CDH5.0.0-beta2 Hadoop distribution which is in this case functioning as the HDFS NameNode. The underlying operating system in this case was CentOS 6.5. As a prerequisite, MySQL 5.1.73 or higher should be installed on this node. The installation of the AquaTM application requires the executor of this guide to have certain files at his or her disposal. The files as used in this guide are called: aquatm-package-3.0-SNAPSHOT.zip aqua.zip aquatmbackup.sql For Dutch and French models (not mandatory): aqua_models_fr_nl.zip Below a scheme of the roles installed on the cluster has been included for your understanding of the architecture. Stageverslag Accenture 52 De Petter Sam NameNode System partition / Data partition 3TI /hdfs_data -> barely used since no DataNode role installed Roles Flume Agent HDFS NameNode Hive Metastore Hive Server2 Hue Server Cloudera MGMT Oozie Server Sqoop Server YARN JobHistory YARN ResourceManager Zookeeper Server DataNode1 System partition / Data partition /hdfs_data DataNode2 System partition / Data partition /hdfs_data DataNode3 System partition / Data partition /hdfs_data Roles Roles Roles HDFS DataNode HDFS Secondary Namenode YARN NodeManager Stageverslag Accenture HDFS DataNode YARN NodeManager HDFS DataNode YARN NodeManager 53 De Petter Sam 3TI Implementation guide 1 Preparation Move MySQL to /hdfs_data/ partition To save some space on the system partition it might be a good idea in our case to change the location where MySQL stores the data to the /hdfs_data/ partition since the NameNode is not a HDFS DataNode and doesn’t use this partition to store data. 1. Stop MySQL service $ sudo service mysqld stop 2. Move MySQL directory $ sudo mv /var/lib/mysql/ /hdfs_data/ 3. Change MySQL configuration $ sudo nano /etc/my.cnf Replace current config with following one, this will point the socket and data directory to the correct location and includes some other important settings for the correct functioning of the AquaTM tool: [client] socket=/hdfs_data/mysql/mysql.sock defaultcharacter-set = utf8 [mysqld] datadir=/hdfs_data/mysql socket=/hdfs_data/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 character-set-server=utf8 default-character-set=utf8 lower_case_table_names=1 max_allowed_packet=64M [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid default-character-set = utf8 [mysqldump] default-character-set = utf8 Save the file and exit (CTRL+X and ‘y’ when prompted) 4. Restart MySQL service $ sudo service mysqld restart 54 De Petter Sam 2 3TI Installing Mahout We will install Mahout because AquaTM uses Mahout in its Singular Value Decomposition (SVD) step when creating a model. The integration with Hadoop will have as an advantage that the creation and training of the model will run as a distributed process. Install Cloudera CDH5 yum repository Cloudera has its own software repository from which you can retrieve the latest version of some tools related to the distribution. To be able to use it we have to add it to the repositories used by the OS. 1. Check CentOS version $ cat /etc/redhat-release 2. Download appropriate version of CDH5 yum repository Version 5: http://archive.cloudera.com/cdh5/redhat/5/x86_64/cdh/clouderacdh5.repo Version 6 (64-bit) : http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/clouderacdh5.repo $ wget http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/clou dera- cdh5.repo 3. Copy repository configuration to /etc/yum.repos.d/ $ sudo cp cloudera-cdh5.repo /etc/yum.repos.d/ 4. Add repository key to repository Version 5: http://archive.cloudera.com/cdh5/redhat/5/x86_64/cdh/RPM-GPG-KEYcloudera Version 6 (64-bit) : http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/RPM-GPG-KEYcloudera $ sudo rpm --import http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/RPMGPG-KEY-cloudera Stageverslag Accenture 55 De Petter Sam 3TI Install Mahout 1. Install Mahout using yum (269Mb will be used) $ sudo yum install mahout Executable will be located at /usr/bin/mahout 2. Install Mahout documentation (optional) $ sudo yum install mahout-doc Documentation will be available at /usr/share/doc/mahout* 3 Installing Tomcat In this part we will be installing Apache Tomcat 7.0.52 and make it able to connect with MySQL. Roughly speaking, Tomcat is a web server that is able to execute Java code. The AquaTM application will later be installed into the Tomcat server as a deployable .war file. Install Apache Tomcat 7.0.52 1. Download tarball from Apache Tomcat website, it’s probably a good idea to check first if the link is still working $ wget http://apache.belnet.be/tomcat/tomcat7/v7.0.52/bin/apache-tomcat7.0.52.tar.gz 2. Move tarball to installation location $ sudo mv apache-tomcat-7.0.52.tar.gz /hdfs_data/ 3. Unpack tarball $ cd /hdfs_data/ $ sudo tar xzf apache-tomcat-7.0.52.tar.gz $ sudo rm apache-tomcat-7.0.52.tar.gz 4. Setup Tomcat to use JDK1.7 Because Tomcat will execute Java code, of course you will have to have Java installed. Here we point Tomcat to the installation location of the Java Development Kit to enable it to execute Java code. We will create a setenv.sh Stageverslag Accenture 56 De Petter Sam 3TI shell script, with the JAVA_HOME environment variable set, that Tomcat will automatically execute on startup. $ cd /hdfs_data/apache-tomcat-7.0.52/bin/ $ sudo touch setenv.sh $ sudo nano setenv.sh Copy following line into setenv.sh (check if the jdk path is correct): export JAVA_HOME=/usr/java/jdk1.7.0_25-cloudera Close and save (CTRL+X and ‘y’ when prompted) 5. (OPTIONAL) If Sqoop 1.99.1 or earlier installed, change Sqoop admin port Sqoop admin uses port 8005 to be contacted by other services because it’s also running in a stripped down version of Tomcat. If we don’t want the two Tomcat instances to have a conflict we should change the port Sqoop uses tot another port that is ‘free’. Check version with following command $ sqoop version This conflict is fixed in version 1.99.2, but CDH5 includes Sqoop 1.4.4. https://issues.apache.org/jira/browse/SQOOP-975 FIX: Navigate to Cloudera Manager -> sqoop -> Configuration -> View and Edit -> Sqoop Server Default Group -> Ports and Addresses -> Sqoop Admin Port Change the port from 8005 to 12001. Restart sqoop service 6. Start Tomcat server $ sudo ./bin/startup.sh 7. Confirm status by going to http://<FILL IN TOMCAT IP>:8080/ (change the IP address placeholder with the address of the machine). This page should show up Stageverslag Accenture 57 De Petter Sam Stageverslag Accenture 3TI 58 De Petter Sam 3TI 8. Configure admin user for Tomcat A user is nog yet configured to access the Tomcat administrator tools. We will add an administrator user to access all services with username ‘admin’ and password ‘admin’. Feel free to change username and password as you like. $ cd conf/ $ sudo nano tomcat-users.xml Add following lines between <tomcat-users> tags # user admin can access manager and admin section both. <role rolename="admin-gui" /> <user username="admin" password="admin" roles="managergui,admin-gui" /> Save and exit file (CTRL+X and ‘y’ when prompted). Restart Tomcat $ $ $ $ cd .. cd bin/ sudo ./shutdown.sh sudo ./startup.sh Make Tomcat start on system boot Because we are working on a test environment it’s not implausible that the server needs to be restarted at some point. If Tomcat is not automatically started at system boot then it’s possible to forget it when the server reboots and then the classification won’t work anymore. We will also put a script in /etc/init.d to be able to call the Tomcat as a service. 1. Navigate to /etc/init.d $ cd /etc/init.d Stageverslag Accenture 59 De Petter Sam 3TI 2. Create Tomcat script Create the tomcat file $ sudo touch tomcat $ sudo nano tomcat Paste following script into the file (check the paths): #!/bin/bash # description: Tomcat Start Stop Restart # processname: tomcat # chkconfig: 234 20 80 JAVA_HOME=/usr/java/jdk1.7.0_25-cloudera export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH CATALINA_HOME=/hdfs_data/apache-tomcat-7.0.52 case $1 in start) sh $CATALINA_HOME/bin/startup.sh ;; stop) sh $CATALINA_HOME/bin/shutdown.sh ;; restart) sh $CATALINA_HOME/bin/shutdown.sh sh $CATALINA_HOME/bin/startup.sh ;; esac exit 0 Save the file and exit nano (CTRL +X and ‘y’ when prompted) 3. Change permissions for the tomcat script $ sudo chmod 755 tomcat 4. Use the chkconfig utility to start Tomcat at boot time $ sudo chkconfig --add tomcat $ sudo chkconfig --level 2345 tomcat on You can now start and stop tomcat using the service command: $ sudo service tomcat start $ sudo service tomcat stop $ sudo service tomcat restart Tomcat will also start automatically on system boot. Stageverslag Accenture 60 De Petter Sam 3TI Connect Tomcat with MySQL MySQL and Tomcat will communicate using JDBC so we will need to supply a JDBC driver for MySQL. MySQL Connector/J is the official JDBC driver for MySQL so we will use this one. 1. Download Connector/J for MySQL $ cd $ wget http://dev.mysql.com/get/Downloads/ConnectorJ/mysql-connector- java-5.1.29.tar.gz 2. Unpack the tarball $ tar xzf http://dev.mysql.com/get/Downloads/ConnectorJ/mysql-connector- java-5.1.29.tar.gz $ sudo rm mysql-connector-java-5.1.29.tar.gz 3. Copy the connector to the tomcat lib folder $ sudo cp mysql-connector-java-5.1.29/mysql-connectorjava-5.1.29-bin.jar /hdfs_data/apache-tomcat-7.0.52/lib/ 4. Further configuration will be done when we get into the installation of the AquaTM application. Stageverslag Accenture 61 De Petter Sam 4 3TI Installing AquaTM Install AquaTM In this part we will install the Aqua Text Mining application version 3.0 1. Create a temp directory in /hdfs_data/ to put the files we wille need for the installation $ sudo mkdir /hdfs_data/temp 2. Upload the aquatm-package-3.0-SNAPSHOT.zip, aqua.zip and aquatmbackup.sql files to the /hdfs_data/temp/ directory using WinSCP (or some other utility you prefer) 3. Unzip the aquatm-package-3.0-SNAPSHOT.zip file $ sudo unzip /hdfs_data/temp/aquatm-package-3.0SNAPSHOT.zip 4. Stop the Tomcat server $ sudo service tomcat stop 5. Connect to MySQL $ mysql –u root –p mysql> 6. Create a database and user for the AQUA TM application mysql> create database aquatm_3_0 default character set utf8 default collate utf8_general_ci; mysql> grant all privileges on aquatm_3_0.* to 'aquatm_3_0'@'%' identified by 'AquaTM123'; mysql> exit; Stageverslag Accenture 62 De Petter Sam 3TI 7. Force case insensitivity for table names AquaTM was developed on a Windows machine which has case insensitivity by default. We enforce the same property here. $ sudo service mysqld stop $ sudo nano /etc/my.cnf Make sure following lines are under the [mysqld] section lower_case_table_names=1 max_allowed_packet=64M sql-mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITU TION,ANSI_QUOTE S,IGNORE_SPACE' Save and exit (CTRL + X and ‘y’ when prompted) Restart MySQL $ sudo service mysqld start 8. Load database objects with mysqldump utility We will load the database from a template because the usage of the scripts is too complicated. If you want to do this anyway for some reason documentation is provided in the zip files. We used the utility mysqldump to create a backup of the template database. We used the following command (do not issue this command, it is only mentioned here for future reference): AGAIN: DO NOT ISSUE THIS COMMAND $ mysqldump -u aquatm_3_0 -p -h <FILL IN MYSQL IP> aquatm_3_0 > aquatm/aquatmbackup.sql To restore the dump file execute the sql file, use ‘AquaTM123’ as password: $ mysql -u aquatm_3_0 -p -h <FILL IN MYSQL IP> aquatm_3_0 < /hdfs_data/temp/aquatmbackup.sql After that, go into mysql as root and issue following command to change collation settings for the tm_term table. This is necessary for the program to work. $ mysql -u root -p mysql> use aquatm_3_0; mysql> alter table tm_term collate utf8_bin; Stageverslag Accenture 63 De Petter Sam 3TI 9. Add datasources to Tomcat server This will point Tomcat to the correct JDBC sources to connect to MySQL. Change the server.xml configuration file $ sudo nano /hdfs_data/apache-tomcat-7.0.52/conf/server.xml Add following lines between <GlobalNamingResources> tags (configure correct IP address instead of placeholders) to configure JDBC resources <Resource name="jdbc/aquatmDS" type="javax.sql.DataSource" username="aquatm_3_0" password="AquaTM123" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://<FILL IN MYSQL IP>:3306/aquatm_3_0?batchSize=1000&addBatch=true&au toReconnect=tru e&fetchSize=1000&transformedBitIsBoolean=true&i nteractive- timeout=30000" maxActive="20" maxIdle="1" validationQuery="select 1"/> <Resource name="jdbc/analyticsFactoryDS" type="javax.sql.DataSource" username="aquatm_3_0" password="AquaTM123" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://<FILL IN MYSQL IP>:3306/aquatm_3_0?batchSize=1000&addBatch=true&au toReconnect=tru e&fetchSize=1000&transformedBitIsBoolean=true&i nteractive- timeout=30000" maxActive="20" maxIdle="1" validationQuery="select 1"/> <Resource name="jdbc/portalWebDS" type="javax.sql.DataSource" username="aquatm_3_0" password="AquaTM123" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://<FILL IN MYSQL IP>:3306/aquatm_3_0?batchSize=1000&addBatch=true&au toReconnect=tru e&fetchSize=1000&transformedBitIsBoolean=true&i nteractive- timeout=30000" maxActive="20" maxIdle="1" validationQuery="select 1"/> <Resource name="jdbc/cas50DS" type="javax.sql.DataSource" username="aquatm_3_0" password="AquaTM123" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://<FILL IN MYSQL IP>:3306/aquatm_3_0?batchSize=1000&addBatch=true&au toReconnect=tru e&fetchSize=1000&transformedBitIsBoolean=true&i nteractive- timeout=30000" maxActive="20" maxIdle="1" validationQuery="select 1"/> Save and exit (CTRL + X and ‘y’ when prompted) Stageverslag Accenture 64 De Petter Sam 3TI Change the context.xml configuration file $ sudo nano /hdfs_data/apache-tomcat7.0.52/conf/context.xml Add following lines between <Context> tags <ResourceLink global="jdbc/aquatmDS" name="jdbc/aquatmDS" type="javax.sql.DataSource"/> <ResourceLink global="jdbc/portalWebDS" name="jdbc/portalWebDS" type="javax.sql.DataSource"/> <ResourceLink global="jdbc/analyticsFactoryDS" name="jdbc/analyticsFactoryDS" type="javax.sql.DataSource"/> <ResourceLink global="jdbc/cas50DS" name="jdbc/cas50DS" type="javax.sql.DataSource"/> Save and exit (CTRL + X and ‘y’ when prompted) 10. Configure Java Environment Options for Tomcat We will alter some options regarding memory usage and add a AQUA_HOME property. $ sudo nano /hdfs_data/apache-tomcat-7.0.52/bin/catalina.sh Put following line under the leading comment block JAVA_OPTS="-Xms1024M -Xmx3048M -XX:MaxPermSize=256M -server - Dcom.sun.management.jmxremote DAQUA_HOME=/hdfs_data/aqua" Save and exit (CTRL + X and ‘y’ when prompted) 11. Create AQUA_HOME for the AQUA TM configuration and client $ sudo mkdir /hdfs_data/aqua Unzip aqua.zip file to the location defined in the AQUA_HOME variable $ sudo unzip /hdfs_data/temp/aqua.zip -d /hdfs_data/aqua Stageverslag Accenture 65 De Petter Sam 3TI 12. Edit .properties files in AQUA_HOME $ cd /hdfs_data/aqua/ Make a duplicate of portal.properties and rename it to usermgmt.properties $ sudo cp portal.properties usermgmt.properties Change the IP address placeholders you find in each of the following configurations to the correct IP addresses. Edit the portal.properties file and replace all content with the following. Don’t forget to change the IP address. REMOTE.HOST=http://<FILL IN TOMCAT IP>:8080 REMOTE.USERMODULE.HOST=http://<FILL IN TOMCAT IP>:8080 REMOTE.PORTAL.HOST=http://<FILL IN TOMCAT IP>:8080 database.hibernate.dialect=org.hibernate.dialect.MySQL5Inno DBDialect database.hibernate.default_schema=AQUATM_3_0 Edit the usermgmt.properties file and replace all content with the following: REMOTE.HOST=http://<FILL IN TOMCAT IP>:8080 REMOTE.USERMODULE.HOST=http://<FILL IN TOMCAT IP>:8080 REMOTE.PORTAL.HOST=http://<FILL IN TOMCAT IP>:8080 sgbd=MySQL database.hibernate.dialect=org.hibernate.dialect.MySQL5Inno DBDialect database.hibernate.default_schema=AQUATM_3_0 Save and exit. Stageverslag Accenture 66 De Petter Sam 3TI Edit the aquatm.properties file and replace all content with the following: #hibernate.dialect=org.hibernate.dialect.Oracle10gDialect hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect #hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect #sgbdType=Oracle sgbdType=MySQL #sgbdType=PostgreSQL REMOTE.HOST=http://<FILL IN TOMCAT IP>:8080 REMOTE.USERMODULE.HOST=http://<FILL IN TOMCAT IP>:8080 REMOTE.MM.HOST=http://<FILL IN TOMCAT IP>:8080 REMOTE.PORTAL.HOST=http://<FILL IN TOMCAT IP>:8080 #model_integration_active=true cache_max_num_models=3 #cron_check_model_status=0 */15 * * * * # Número de processors NLP y proyeccion #numProcessors=4 # Tamanio colas proyeccion #projection_input_queue_size=3 #projection_output_queue_size=3 # Tamanio colas nlp #nlp_input_queue_size=3 #nlp_output_queue_size=50 #Authentication #REMOTE.USER.USERNAME=aquatm #REMOTE.USER.PASSWORD=neo #AUTHENTICATION.REQUIRED=true #PASSWORD.ENCRYPT.TYPE=SIMPLE #PASSWORD.ENCRYPT.TYPE=AES # Cron para la comprobacion de estados de entrenamientos #cron_check_model_status=0 */30 * * * * # Cron para generar los informes de validacion #cron_check_validation_status=0 0 0 * * * Save and exit. Stageverslag Accenture 67 De Petter Sam 3TI Edit the aquaaf-model.properties file and replace all content with the following: REMOTE.HOST=http://<FILL IN TOMCAT IP>:8080 REMOTE.USERMODULE.HOST=http://<FILL IN TOMCAT IP>:8080 REMOTE.PORTAL.HOST=http://<FILL IN TOMCAT IP>:8080 configuration.security.role=ROLE_AQUATM_ADMIN configuration.security.contexts.role=ROLE_AQUATM_ADMIN application.security.role=ROLE_AQUATM_USER application.security.analyst.role=ROLE_AQUATM_ADMIN database.hibernate.dialect=org.hibernate.dialect.MySQL5Inno DBDialect database.hibernate.default_schema=aquatm_3_0 database.username=aquatm_3_0 Save and exit. 13. Copy the war files into the Tomcat webapps folder Tomcat will automatically deploy these war files on server startup. $ sudo cp /hdfs_data/temp/*.war /hdfs_data/apache-tomcat7.0.52/webapps/ 14. Start Tomcat and check the log for errors $ sudo service tomcat start $ sudo tail -f /hdfs_data/apache-tomcat7.0.52/logs/catalina.out 15. Log in to the application using username ‘adminTm’ and password ‘neo’ on http://<FILL IN TOMCAT IP>:8080/aquatm-console/ with the correct IP address. 16. Install the client for command line access to the application $ sudo unzip /hdfs_data/temp/aquatm-client.zip -d /hdfs_data/aqua/ 17. Clean the /hdfs_data/temp folder as you wish Install additional language packs (nl,fr) - OPTIONAL Stageverslag Accenture 68 De Petter Sam 3TI The default installation of AquaTM is able to do NLP on English and Spanish text. By doing the following steps we can also make it work with Dutch and French texts. 1. Upload the aqua_models_fr_nl.zip file to the /hdfs_data/temp/ directory using WinSCP (or some other utility you prefer) 2. Unzip the aqua_models_fr_nl.zip file $ sudo unzip /hdfs_data/temp/aqua_models_fr_nl.zip 3. Move the i18n and models folder to AQUA_HOME $ sudo mv /hdfs_data/temp/i18n /hdfs_data/aqua/ $ sudo cp -r /hdfs_data/temp/models /hdfs_data/aqua/ $ sudo rm -r /hdfs_data/temp/models 4. Add aquatm.properties from the zip archive to the already existing aquatm.properties file $ sudo sh -c "cat /hdfs_data/temp/aquatm.properties >> /hdfs_data/aqua/aquatm.properties" 5. Replace i18n.resources in /hdfs_data/aqua/aquatm.properties with a valid path $ sudo nano /hdfs_data/aqua/aquatm.properties Replace the original line with this one: home.i18n.resources=file:/hdfs_data/aqua/i18n/messages,WE B- INF/i18n/messages 6. Restart the Tomcat server $ sudo service tomcat stop $ sudo service tomcat start Stageverslag Accenture 69 De Petter Sam Copyright © 2013 Accenture All rights reserved. Accenture, its logo, and High Performance Delivered are trademarks of Accenture. 70 De Petter Sam 3 TI Big Data Challenge: Tableau cookbook Stageverslag Accenture 71 De Petter Sam 3 TI Contents Modification / Revision log ...................................................................................................... 73 Tableau installation & implementation ................................................................................... 74 1. Download ...................................................................................................................... 74 2. Connection to Hadoop Hive .......................................................................................... 74 a. 3. prerequisites .............................................................................................................. 74 Test connection to Hadoop Hive cluster ....................................................................... 75 Visualizations ............................................................................................................................ 78 1. Bar chart ........................................................................................................................ 78 2. Line chart ....................................................................................................................... 78 3. Pie chart......................................................................................................................... 79 4. Map ............................................................................................................................... 79 5. Scatter plot .................................................................................................................... 80 6. Gantt chart .................................................................................................................... 81 7. Bubble chart .................................................................................................................. 82 8. Histogram chart ............................................................................................................. 82 9. Bullet chart .................................................................................................................... 83 10. Heat map ................................................................................................................... 83 11. Highlight table............................................................................................................ 84 12. Treemap ..................................................................................................................... 84 13. Box-and-whisker plot ................................................................................................. 85 R integration ............................................................................................................................. 86 Getting started...................................................................................................................... 86 Using R .................................................................................................................................. 86 Solving problems ...................................................................................................................... 87 1. 2. Calculated fields ............................................................................................................ 87 a. How to Create a Calculated Field .............................................................................. 87 b. How to create a histogram based on binned data: ................................................... 88 c. Example of Percentages and Aggregations ............................................................... 91 Data format ................................................................................................................... 93 Stageverslag Accenture 72 De Petter Sam 3 TI Modification / Revision log Author(s) Name Function Date De Petter Sam Intern 19/05/2014 De Bie Jochen Intern 19/05/2014 Elias de Souza Stéphane Intern 19/05/2014 Smets Pieter Jan Intern 19/05/2014 Name Function Date Elias de Souza Stéphane Intern 22/05/2014 Reviewed by History Date Version 19/05/2014 V1.0 Evolution First version Name De Petter Sam De Bie Jochen Elias de Souza Stéphane Smets Pieter Jan 22/05/2014 Stageverslag Accenture V2.0 Second version Elias de Souza Stéphane 73 De Petter Sam 3 TI 5.5 Tableau installation & implementation In this guide you will find how to install Tableau, how to import data from cluster and best practices. 1. Download Go to http://www.tableausoftware.com/products/trial?os=windows and install Tableau Desktop 2. Connection to Hadoop Hive To use the data from our cluster, we want to make a connection from our cluster to Tableau. This link gives you more information about how to make the connection: http://kb.tableausoftware.com/articles/knowledgebase/hadoop-hive-connection a. prerequisites For connections to Hive Server 2, we use: - Cloudera distribution including Apache Hadoop CDH4u1 Note that there are other distributions available for the connection. You will also need to install the correct ODBC driver. This driver can be downloaded on this link: http://www.tableausoftware.com/support/drivers Choose the driver you want to use. In this case we will use “Cloudera Hadoop Hive/ Cloudera Impala”. Click on “Cloudera Hadoop Hive / Cloudera Impala” to install the driver Choose what connection you want: “Tableau/hive” or “Tableau/Impala” When Tableau is installed, open it, select data -> connect to data . At this point we use cloudera Hadoop connection. Stageverslag Accenture 74 De Petter Sam 3 TI We will be using the Cloudera Hadoop. Click on it and fill in your IP address: Click on connect, if successful, it will ask you at step 4(on the picture above) what schema (or database) you want to use. At step 5 it will ask you what table(s) you want to implement. At step 6, give the connection a name to retrieve it easier. 3. Test connection to Hadoop Hive cluster After installing the ODBC driver, click on (windows start button). Search for “ODBC” and you will see 32-bit ODBC Administrator. Double-click on it. Once opened, go to the system DSN tab. Click on ‘add’. Stageverslag Accenture 75 De Petter Sam 3 TI Choose what driver you want to use for the Hadoop distribution. In our case this will be Cloudera ODBC driver for Apache Hive Click on next and fill in your IP address. If authentication is needed, choose username and type in the username. Test the connection by clicking ‘Test’. If everything was filled in correct, you will see the “TEST COMPLETED SUCCESSFULLY!!” screen. Stageverslag Accenture 76 De Petter Sam Stageverslag Accenture 3 TI 77 De Petter Sam 3 TI Visualizations In this part we’ll go over the different kinds of visualizations available in Tableau and when you should use them. This part is heavily based on the whitepaper made by Tableau software: http://www.tableausoftware.com/learn/whitepapers/which-chart-or-graphis-right-for-you Make sure to check out this document as it includes a lot more useful tips and guidelines for each type of chart! All charts in this document are taken from this whitepaper. 1. Bar chart Bar charts are the most common way to visualize data. Bar charts are especially effective when you have numerical data that splits nicely into different categories so you can quickly see trends within your data. When to use: Comparing data across categories. Examples: Volume of shirts in different sizes, website traffic by origination site, percent of spending by department. Example: 2. Line chart Line charts are next to bar charts and pie charts among the most common types of charts. Line charts connect individual numeric data points. The result is a simple, straightforward way to visualize a sequence of values. Their primary use is to display trends over a period of time. When to use: Viewing trends in data over time. Examples: stock price change over a fiveyear period, website page views during a month, revenue growth by quarter. Example: Stageverslag Accenture 78 De Petter Sam 3 TI 3. Pie chart Pie charts are one of the most misused type of charts. Despite being one of the more common types of charts, they should only be used when displaying relative amounts. Comparing data should be left to bar charts or line charts. When to use: Showing proportions. Examples: percentage of budget spent on different departments, response categories from a survey, breakdown of how Americans spend their leisure time. Example: 4. Map A map to visualize the data is always useful whenever you have any kind of location data. Stageverslag Accenture 79 De Petter Sam 3 TI When to use: Showing geocoded data. Examples: Insurance claims by state, product export destinations by country, car accidents by zip code, custom sales territories. Example: 5. Scatter plot Scatter plots are an effective way to give you a sense of trends, concentrations and outliers that will direct you to where you want to focus your investigation efforts further. It’s a convenient way to detect a relationship between variables. When to use: Investigating the relationship between different variables. Examples: Male versus female likelihood of having lung cancer at different ages, technology early adopters’ and laggards’ purchase patterns of smart phones, shipping costs of different product categories to different regions. Stageverslag Accenture 80 De Petter Sam 3 TI Example: 6. Gantt chart At first sight Gantt charts might look like bar charts. Gantt charts are more oriented towards displaying how some parameter behaves over time though. While most associate Gantt charts with project management, they can be used to understand how other things such as people or machines vary over time. . Seeing what needs to be accomplished – and by when – is essential to make this happen. When to use: Displaying a project schedule. Examples: illustrating key deliverables, owners, and deadlines. Showing other things in use over time. Examples: duration of a machine’s use, availability of players on a team. Example: Stageverslag Accenture 81 De Petter Sam 3 TI 7. Bubble chart Bubble charts should actually not be viewed as a separate type of chart but can be seen as a way to accentuate how data is distributed on a scatter plot or a map. People are drawn to using bubbles because the varied size of circles provides meaning about the data. When to use: Showing the concentration of data along two axes. Examples: sales concentration by product and geography, class attendance by department and time of day. Example: 8. Histogram chart Use histograms when you want to see how your data are distributed across groups. At times you won’t necessarily know which categorization approach makes sense for your data. You can use histograms to try different approaches to make sure you create groups that are balanced in size and relevant for your analysis. When to use: Understanding the distribution of your data. Examples: Number of customers by company size, student performance on an exam, frequency of a product defect. Example: Stageverslag Accenture 82 De Petter Sam 3 TI 9. Bullet chart Bullet charts are especially useful when you’re trying to reach a goal and you want to see progress tracked. This is another variation on the bar chart. Bullet graphs compare a primary measure (let’s say, year-to-date revenue) to one or more other measures (such as annual revenue target) and presents this in the context of defined performance metrics (sales quota, for example). Looking at a bullet graph tells you instantly how the primary measure is performing against overall goals (such as how close a sales rep is to achieving her annual quota). When to use: Evaluating performance of a metric against a goal. Examples: sales quota assessment, actual spending vs. budget, performance spectrum (great/good/poor). Example: 10. Heat map Heat maps are a great way to compare data across two categories using color. The effect is to quickly see where the intersection of the categories is strongest and weakest. When to use: Showing the relationship between two factors. Examples: segmentation analysis of target market, product adoption across regions, sales leads by individual rep Example: Stageverslag Accenture 83 De Petter Sam 3 TI 11. Highlight table The highlight table builds further on the heat map. It takes it one step further. In addition to showing how data intersects by using color, highlight tables add a number on top to provide additional detail. When to use: Providing detailed information on heat maps. Examples: the percent of a market for different segments, sales numbers by a reps in a particular region, population of cities in different years. Example: 12. Treemap Treemaps are great when you want to see how different pieces of your data relate to the whole. These charts use a series of rectangles, nested within other rectangles, to show hierarchical data as a proportion to the whole. Through each rectangle’s size and color, you can often see patterns across parts of your data, such as whether a particular item is Stageverslag Accenture 84 De Petter Sam 3 TI relevant, even across categories. They also make efficient use of space, allowing you to see your entire data set at once. When to use: Showing hierarchical data as a proportion of a whole: Examples: storage usage across computer machines, managing the number and priority of technical support cases, comparing fiscal budgets between years Example: 13. Box-and-whisker plot This last type of chart, also called boxplots, are an important way to show distributions of data. The name refers to the two parts of the plot: the box, which contains the median of thedata along with the 1st and 3rd quartiles (25% greater and less than the median), andthe whiskers, which typically represents data within 1.5 times the Inter-quartile Range(the difference between the 1st and 3rd quartiles). The whiskers can also be used to also show the maximum and minimum points within the data. When to use: Showing the distribution of a set of a data: Examples: understanding your data at a glance, seeing how data is skewed towards one end, identifying outliers in your data. Example: Stageverslag Accenture 85 De Petter Sam 3 TI R integration Getting started In order to use R in Tableau, you need to have R installed on the same machine and have a “Rserve” instance running. Once you have R installed, go to the R prompt and execute following steps: install.packages(“Rserve”) library(Rserve) Rserve() Each time you restart your computer you’ll have to execute the last two steps to start up the Rserve instance. When the instance is running, to go tableau and under help Settings and Perfomance Manage R Connection, connect to localhost with the default port of 6311. Now you’re able to use R within Tableau. Using R The R integration in Tableau can mainly be used for following three things: Outlier detection Clustering Regression R can only be used in calculated fields by calling the SCRIPT_REAL() function . It returns the value of the R expression that you pass as a string. In this string you can use “.arg1”, “.arg2”,… to pass arguments. These arguments are given after the the string. An example of using the SCRIPT_REAL() function: SCRIPT_REAL( "lm(.arg1 ~ log(.arg2))$coefficients[1]", avg([H: Life exp (years)]), avg([H: Infant mort/1k live births]) ) Stageverslag Accenture 86 De Petter Sam 3 TI Solving problems 1. Calculated fields Most of the problems occurring in Tableau are related to data format or structure. a. How to Create a Calculated Field To create a new calculated field, select Analysis > Create Calculated Field, or select Create Calculated Field on one of the Data window title menu. The Calculated Field dialog box opens. To define the calculation do the following: 1. Specify a name for the new field. 2. When finished, click OK. Stageverslag Accenture 87 De Petter Sam 3 TI When your data is not structured or formatted the way you want, you can still use formulas just like in Excel sheets. Tableau allows you to create a new field by calculation. To create a calculated field, just make a wright click on the data panel and select create calculated field. Set a name for the new field. The most used functions are: Aggregation o Dimension: returns all unique values in a measure or dimension. o Standard deviation: Computes the standard deviation of all values in the given expression based on a sample population. o Variance: Computes the variance of all values in the given expression based on a sample. o Disaggregate: Returns all records in the underlying data source. http://onlinehelp.tableausoftware.com/v6.1/public/online/en-us/i522970.html You can also wright click on a field and apply the type of transformation you need. Binned data You can use histograms to display the distribution of values in a field. Wright click on a measure field, select create bins, set values in the pop up window and the bin should appear in the dimensions panel. Place the dimension bin on the columns scale and the measure on the rows. b. How to create a histogram based on binned data: 1. Select the Sales measure in the Data window and select Create Bins on the right-click context menu. Stageverslag Accenture 88 De Petter Sam 3 TI 2. Complete the Create Bins dialog box. When you bin a measure, you create a new field. The new field is a binned version of the original field. Specify the name of the new field and the size of each bin. To help you determine the best bin size, press the Load button to display the range of values of the measure. The binned field appears in the Dimensions area of the Data window because the bins are treated as discrete categories. Stageverslag Accenture 89 De Petter Sam 3 TI 3. Place the Sales measure on the Rows shelf. The measure is automatically aggregated as a summation, and an axis is created with a label given by the field name. 4. Place the Sales (bin) dimension on the Columns shelf. Row headers are created with labels given by the dimension member names. Note: Notice that all bins are of equal size. If you want to create variable sized bins, you can create a calculation using the using the CASE function. The view is shown below. Each bin acts as an equal-sized container that summarizes data for a specific range of values. Each bin label designates the lower limit of the range of numbers that is Stageverslag Accenture 90 De Petter Sam 3 TI assigned to the bin. Note that the lower limit is inclusive. For example, the bin labelled 1K contains numbers greater than or equal to 1,000, but less than 2,000. http://onlinehelp.tableausoftware.com/v6.1/public/online/en-us/i524769.html Percentages There are two factors that contribute to the percentage calculation: The aggregation – Percentages are calculated on the basis of the current aggregation for each measure. The data to which you compare all percentage calculations – Percentages are a ratio of numbers. The numerator is the value of a given mark. The denominator depends on the type of percentage you want, and is the number to which you compare all your calculations. The comparison can be based on the entire table, a row, a pane, and so on. By default, Tableau uses the entire table. Other percentage calculations are available via the Percentage of menu item. The figure below is an example of a text table with percentages. The percentages are calculated with the Sales measure aggregated as a summation, and are based on the entire table. c. How to create Percentages and Aggregations The view shown below is a nested bar chart created using two dimensions and a measure that is aggregated as a maximum. Additionally, the data are color-encoded by a dimension and the default percentage calculation has been applied. Notice that the axis labels are modified to reflect the percent calculation. The tooltip reveals that the maximum sales for furniture in the east in 2005 is 31.6% of the maximum for the entire table. What is the maximum for the table? You can see by inspection that the maximum occurs in the South in the year 2005. The tooltip for this bar segment would reveal a maximum sales of 100%. Stageverslag Accenture 91 De Petter Sam 3 TI The next view displays two disaggregated measures as a scatter plot. Again, the default percentage calculation has been applied as reflected by the modified axis labels. The tooltip shows that the selected data point has a profit of -0631% and a sales of 0.1636%. Note that the percentage calculations are based on the entire data source. Stageverslag Accenture 92 De Petter Sam 3 TI http://onlinehelp.tableausoftware.com/v6.1/public/online/enus/i218801.html#i218801 2. Data format Importing data into Tableau and visualizing it can be difficult sometimes. Even if Tableau maps most current formats, some are not interpreted. For example, this type of date: 20/05/2014. To transform this format, into something understandable by Tableau, we can use such a formula: DATETIME(MID([created_at],9,2) + "-" + MID(REPLACE(REPLACE(LOWER([created_at]),"mar","03"),"apr","04"),5,2) + " " + RIGHT([created_at],4) + " " + MID([created_at],12,8)) Stageverslag Accenture 93 De Petter Sam 3 TI Copyright © 2014 Accenture All rights reserved. Accenture, its logo, and High Performance Delivered are trademarks of Accenture. Stageverslag Accenture 94 De Petter Sam 3 TI 5.6 Aqua TM Modelling How to create an Aqua TM model? Step 1: Extract tweets from the tweets table into an excel file. This can be done by doing this query in hive: select id, created_at, text, date from tweets where lang = 'nl' LIMIT 2500 When the command is executed, you will see a button to extract the data in a CSV file (excel) If the data is extracted into a CSV file, you may add a column called ‘sentiment’ and ‘useful’ in the excel file. To use the tweets as documents for Aqua TM, we need to create an XML file which loads the documents in Aqua TM. This XML file can be created by adding a new column after the sentiment/useful column. We use the following code in a field in the CSV file: =CONCATENATE("<documentRequest> <corpus>TweetsPoliticians_NL</corpus> <document> <name>";ROW ID;"</name> <type>train</type> <attributes> <attribute> <name>date </name> <stringValue>";ROW CREATED_AT;"</stringValue> </attribute> <attribute> <name>id_twitter </name> <stringValue> <![CDATA[";ROW ID;" ]]> </stringValue> </attribute> </attributes> <text> <![CDATA[";ROW TEXT;" ?]]> </text> </document> <targets> <target> <name>useful</name> <value> <![CDATA[";ROW USEFUL;" ]]> </value> </target><target> <name>sentiment</name> <value> <![CDATA[";ROW SENTIMENT;" ]]> </value> </target> </targets> </documentRequest> ") ROW ID, CREATED_AT, USEFUL and SENTIMENT must be used. Click on the first record and use the cells to fill in. IT IS IMPORTANT to sort the sentiment on A-Z. Also sort the useful tweets and only use the yes-value. Stageverslag Accenture 95 De Petter Sam 3 TI Count the negative tweets. If you have 400 tweets then 320 of them needs to be trained, and 80 needs to be test. (80%-20% value!) In the XML code (see above) change the type TRAIN to TEST for the 20% of negative/positive tweets. Copy the whole column where you created the XML code and paste it in notepad++ At the top of the text file (notepad++) add these: <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <documents xmlns="http://ws.web.console.aquatm.ia.neometrics.com"> Example of a tweet. Check line 1 and 2. Also check the changes like <documentRequest> and </documentRequest> Use CTRL-F and replace following text: REPLACE TEXT TO THIS "<documentRequest> <documentRequest> <name>date </name> <name>date</name> (remove the space after date) <name>id_twitter </name> <name>id_twitter</name> (remove the space after id_twitter) </documentRequest> " </documentRequest> It is also important to add at the end of the file </documents> which will close the whole document. Otherwise you will have an error. Stageverslag Accenture 96 De Petter Sam 3 TI To play safe I also search for “Negative” and “Positive” and change it to “negative” and “positive”. If there’s a difference in capitals, the SQL database will not work and you will get errors in Aqua TM (Error IDF values) Save the file as an XML file on your desktop. Go to your internet browser and go to url 172.20.1.87:8080. This is your Tomcat server. Click on manager-app and then click on aqua-tm console. IMPORTANT: If you cannot connect to the cluster/Aqua TM, it is possible that your proxy is not enabled. Check your internet settings to be sure. Also connect with the VPN when not connected in the office. Login with adminTm, password is neo Once logged in, click on all models and create your corpus, attributes and targets. Attributes (value type is string): Corpus: Model: To create the model, you need to fill in some fields: Stageverslag Accenture 97 De Petter Sam 3 TI The more documents you have, the higher you can! . A knn of 100 is good. You can set this higher, but then you will also need more documents. I wouldn’t recommend to go lower than 100. If you get error on the model, change the values of Num Factors and Num Terms lg. Sometimes you have to play with the values to get a good result. Targets: When this is all done, we can upload the documents (XML file) in Aqua TM. Open up WINSCP and login on the cluster. Create a new map and add the XML file in it. Open Putty, connect to the cluster (172.20.1.86) and change directory to /hdfs_data/aqua/ Use following code: CD /hdfs_data/aqua/ sudo java -jar aquatm-client.jar -mt updateCorpus -xp file:/home/sam.depetter/XML-filesTwitter/ This is the PATH for me, it depends on where you saved the file. Create a bash script by using following command: Touch <name>.sh Chmod 775 <name>.sh Add following code and change the PATHS to your specified paths. This script will automatically run your JAR-file and put the files on the server and remove them from your cluster. Once the documents are uploaded and everything went good, the only thing that you have left to do is to train the model. Change the settings of the JAR-file to your specific needs (IP, PATH, …). Put the JAR-file on the cluster by using winSCP. You can create a new map to do so. Open up Putty and change directory to the map you just created with the JAR-file in it. To let your data train, run following command: Java –jar “NAMEOFYOURJAR”.jar <DATE> Example: java –jar Automatization.jar 20140601 The tweets of the specific date will be categorized by the model and will get a sentiment and sentiment score. This will be saved in a CSV-file. Put this file on the cluster by using following command in Putty: Hadoop fs –put <CSV FILE NAME>.csv /user/<NAME>/<PATH>/ Stageverslag Accenture 98 De Petter Sam 3 TI Example: Hadoop fs –put 20140601.csv /user/sam.depetter/evaluatedTweets/ Change directory to /etc/ and open up your crontab by doing this command: Cd /etc/ Sudo vi crontab Add your crontab job by following the lines. Restart crontab and everything should be fine. Have fun using Aqua TM! Stageverslag Accenture 99
© Copyright 2024 ExpyDoc