P&G Open Data Hackaton 2017 – pierwszy hackaton
Staram ostatnio nadrobić zaległości na blogu i postanowiłem, że warto byłoby w końcu opisać relację z pierwszego hackatonu, w którym brałem udział. Razem z Piotrem Waszczykiem oraz Sebastianem Sobierajskim w ramach działalności koła naukowego UZ.NET postanowiliśmy wziąć udział w hackatonie o Big Data, który był organizowany przez firmę Procter & Gambler w Warszawie, Do tej pory nigdy nie mieliśmy styczności z technologiami Big Data, znaliśmy ją wyłącznie z artykułów technologicznych, ale nie mieliśmy nigdy możliwości na to, żeby się nimi pobawić. Dla nas miała to być forma dobrej zabawy oraz sprawdzenia się w nowych technologiach.
Przed hackatonem
Nasze doświadczenie w tych technologiach wynosiło 0 (słownie zero). Nie mieliśmy nigdy do czynienia z językiem R, który jest używany przez analityków do przetwarzania danych. Oprócz tego nigdy nie korzystaliśmy z technologii typu Apache Hadoop czy Spark. Z góry chciałem podziękować Bartkowi Bandrowskiemu, za to, że wprowadził nas w podstawy języka R. Na szczęście mieliśmy możliwość użycia narzędzi, w których czuliśmy się lepiej, ale o tym później.
Transport z Zielonej Góry do Warszawy nie sprawił problemów. Podróż minęła szybko. Na szczęście w pociągu był dostęp do Wi-Fi, więc mogliśmy na spokojnie jeszcze przygotować się do hackatonu i powtarzaliśmy sobie materiał, który mógłby nam się przydać. Hackaton miał odbywać się w centrum konferencyjnym P&G na ulicy Zabranieckiej, gdzie według Google Maps mieliśmy jakieś 30 min drogi spacerem. Taaa… Ostatecznie zgubiliśmy się gdzieś koło Grochowa i musieliśmy szukać wyjścia koło torów kolejowych co niekoniecznie było mądrym posunięciem.
Początek i nowe znajomości
Po zapisach wszyscy zebrali się w sali konferencyjnej, gdzie czekaliśmy na oficjalne rozpoczęcie hackatonu. Do naszego stolika dosiadły się osoby z warszawskiej firmy zajmującej się analityką. Na nasze szczęście okazało się, że to byli analitycy, ale nie mieli doświadczenia w programowaniu. Za to my średnio byliśmy z analityką, ale programowanie to był nasz atut. Dobraliśmy się idealnie i jestem zadowolony z naszej współpracy. Byli to wyśmienici ludzie, z którymi czas na hackatonie minął bardzo szybko i z ogromną przyjemnością pracowało mi się z nimi.
Celem hackatonu było wpadnięcie na pomysł w jaki sposób przetworzyć dane od organizatora. W tematyce był duży nacisk na konsumenta. Dostaliśmy dane z mediów społecznościowych, które zawierały różne informacje w różnych językach z różnych marek firmy. Zabraliśmy się od razu do pracy, a czas nieubłaganie minął. Na początku omówiliśmy koncepcję tego co chcemy zrobić i zaczęliśmy pracować. Nowo poznani znajomi zajęli się pracą od strony analitycznej, a my w tym czym o wiele lepiej się czujemy – technologicznej. Wspólnie znaleźliśmy narzędzia, które pozwoliły nam na realizację celu.
Próbkę danych mieliśmy w różnych językach i bardzo dużo było śmieciowych, które nie nadawały się do niczego. Do tłumaczenia użyliśmy API od Google, do analizy sentymentu znaleźliśmy odpowiednie API, ale niestety zgubiłem link do niego. Wyniki zwracane przez niego nie były do końca satysfakcjonujące więc nasi analitycy poprawili trochę algorytm 😉 Napisaliśmy prosty program w C#, który brał wszystkie wyniki z pliku CSV, które dostarczali analitycy z komentarzami. My natomiast przepuszczaliśmy wszystko przez API i zwrócone wyniki zapisywaliśmy do pliku, który potem można było wrzucić do analizy, którą przygotowali nasi znajomi. Program napisany wielowątkowo, ale mimo to wyniki były uzyskiwane bardzo wolno (przez API) i chcieliśmy to odpalić na serwerze, który udostępniali organizatorzy. Mina administratora, który zobaczył w czym napisaliśmy – bezcenna. Okazało się, że wszystko co mamy do wykorzystania to wyłącznie serwery z linuxem. TO BYŁ NASZ BŁĄD, że nie sprawdziliśmy tego wcześniej. W sumie nie zakładaliśmy, że potrzebujemy aż takich mocnych maszyn. Tych danych też aż tak dużo nie było, żeby komputer sobie z nimi nie poradził. No owszem, ale komunikacja z API była wąskim gardłem aplikacji…
Ciężkie wybory i błędy
Mieliśmy do wyboru – Python lub Java. Od nas tylko Piotrek umiał Pythona, ja nigdy się z tym nie bawiłem, tak samo Sebastian. Wybór był więc oczywisty – Java. W Javie to jedynie co to pisałem projekty na zaliczenie na studiach, ale była to wystarczająca wiedza. Sam mechanizm działania aplikacji był taki sam, pozostawał tylko problem jak to przenieść na Javę. I tu popełniliśmy kolejny błąd – nie użyliśmy Mavena, tylko ręcznie wgrywaliśmy biblioteki. Byliśmy pewni, że tak będzie szybciej – nie było… Ostatecznie spędziliśmy kupę czasu nad analizowaniem czemu nic nie działa. Doszliśmy do momentu, że już nawet StackOverflow nie znał odpowiedzi na nasze błędy. Okazało się, że jedna (!) biblioteka była o jeden numerek wersji niższa… Potem już to jakoś przebiegło bez większych przeszkód. Dodaliśmy obsługę wielowątkowości i działało. W 2 godziny przepisaliśmy wszystko co trochę zaskoczyło administratora, że tak szybko sobie poradziliśmy. Dzięki praktykowaniu pracy w parach (ja klepałem kod jak zombie, a Sebastian pilnował co klepię), udało nam się to osiągnąć. Do dzisiaj się śmiejemy z naszych „fixów na produkcję” 🙂

Zastanawiamy się, czy testować, czy od razu wrzucać na produkcję 😉
W „ramach przerwy” pisaliśmy niewielkie narzędzia które przyśpieszały prace naszych analityków. Po przesianiu zduplikowanych komentarzy i końcowym etapie analizy sentymentu udało nam się zebrać informacje na temat ponad 140 tyś. komentarzy napisanych w różnych językach. Nasi analitycy przeanalizowali je dodatkowo za pomocą swoich algorytmów, które jeszcze zwiększyły wiarygodność tych informacji. Na sam koniec stworzyliśmy wspólnie wraz z analitykami aplikacje w języku R, gdzie opisaliśmy relacje postrzegania różnych marek w zależności od krajów, z których były pisane komentarze oraz zakładka z porównaniem, które marki były bliżej siebie.
Finał
Na sam koniec hackatonu każdy zespół miał poprowadzić prezentację. Początkowo mieliśmy przygotowaną prezentację, że mówimy jednocześnie o analityce i technologiach, ale z rozwojem sytuacji i pytań jury stwierdziliśmy, że prezentacja będzie tylko od strony analitycznej. O technologię i tak zawsze pojawiało się pytanie, a w ten sposób mieliśmy większą szansę na to, że nie dostaniemy pytania, na które nie odpowiemy. Prezentacja była bardzo profesjonalna, przeprowadzona przez Norberta Sosika i Bartka Kowalskiego. Cały zespół cięzko pracował nad tym, żeby dowieźć wszystko do końca.

Analitycy w akcji 🙂
Niestety nie udało nam się wygrać, wygrała drużyna z AGH. W każdym bądź razie czuliśmy, że nasza aplikacja była wykonana na bardzo wysokim poziomie. Nawet mimo braku wygranej, cieszę się, że udało nam się pokazać z dobrej strony i daliśmy radę, mimo wielu problemów, wykonać zadanie.
Chciałbym podziękować wszystkim, którzy byli w naszym zespole za wspaniałą współpracę: Sebastianowi Sobierajskiemu, Piotrkowi Waszczykowi, Norbertowi Sosikowi, Ani Skrzydło, Bartkowi Kowalskiemu, Klaudii Stano, Filipowi Gralewskiemu. Mam nadzieję, że jeszcze będziemy mieć możliwość brać udział razem w hackatonie.
Poniżej film z relacją od organizatorów:
Materiały pochodzą ze strony Centrum Prasowe PAP