Download Stageverslag Sam De Petter

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&amp;addBatch=true&amp;au
toReconnect=tru
e&amp;fetchSize=1000&amp;transformedBitIsBoolean=true&amp;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&amp;addBatch=true&amp;au
toReconnect=tru
e&amp;fetchSize=1000&amp;transformedBitIsBoolean=true&amp;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&amp;addBatch=true&amp;au
toReconnect=tru
e&amp;fetchSize=1000&amp;transformedBitIsBoolean=true&amp;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&amp;addBatch=true&amp;au
toReconnect=tru
e&amp;fetchSize=1000&amp;transformedBitIsBoolean=true&amp;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