V dnešnej preplnenej dobe dát a informácií siahame čoraz viacej po nástrojoch, knižniciach, frameworkoch, ktoré nám poskytnú prácu s BIG DATA. V Morione sme dlho hľadali spôsob ako túto tému uchopiť. Máme skúsenosti s “Big data” analytickým frameworkom Apache Spark (pySpark), alebo dynamic task schedulerom Celery. V poslednej dobe sa nám zapáčili python knižnice Dask a preto som sa rozhodol niečo málo o nich napísať.

Dask knižnice slúžia na paralelne spracovanie (výpočet) dát (parallel computing). Okrem paralélneho spracovania dát sú tiež schopné umožniť plánovanie úloh pri spracovaní dát (central task scheduling).

Dask knižnice ponúkajú vysoký level objektových typov známych v NumPy, Pandas alebo python iterátoroch. V podstate používanie týchto objektov je skoro úplne rovnaké a tým človek, ktorý má rád vedecké knižnice typu Pandas sa nemusí nič učit z hľadiska syntaxe kódu. Volania metód dátových typov sú rovnaké ako v spomínaných knižniciach.
Tu je stručný náhľad z akých knižníc sa skladá jadro Dasku.




Veľkou výhodou použitia Dasku je skutočnosť, že ho môžeme používať ihneď na svojom počítači. Nepotrebujeme zložité clustrove riešenie ani špeciálny hdfs file systém. Dask je proste čistá Python knižnica inštalovaná napríklad pipom. Dask bol dizajnovaný tak aby jednoducho zapadol do už existujúceho Python ekosystému.


Najväčšie zameranie Dasku je v “single machine parallelism” čiže vykonávanie paralelného spracovania dát na jednom počítači s využitím viacerých jadier procesora. 80 percent všetkých používateľov Dasku ho používa na jednom workstation. Je však samozrejmosťou, že knižnice je možné používať aj v distribuovaných systémoch.


Jednoduchá ukážka použitia Dask knižníc na MacBook Pro s 8GB RAM a 4 core

Ako príklad poslúži 815 MB CSV súbor dát New York taxi služby Yellow, ktorá publikuje každý mesiac dataset o objednávkach taxi služby. V našom príklade načítame súbor a vykonáme základný štatistický výpočet

- počet všetkých ľudí cestujúcich v taxíku za obdobie decembra 2017
- počet všetkých ľudí cestujúcich v taxíku len cez Vianoce 2017
- priemerná platba za taxík za celý december


Zdrojový kód v Jupyter notebooku

Error: Embedded data could not be displayed.


Záver

Dask je možné jednoducho používať na jednom počítači alebo viacerých počítačoch spojením do klastra. K práci s Daskom nám postačí znalosť Pandas knižníc a nemusíme sa učiť novú syntax. V budúcnosti sa pozrieme ako pracovať s Daskom aj v zložitejších situáciách.


Michal Kalman
Michal Kalman
Softvérový vývojár

Full-stack developer a podnikateľ zameriavajúci sa na platformu Java, Python. Mám dlhoročné profesionálne skúsenosti s vývojom Java/JavaEE aplikácií. Som zakladateľ firmy Morione, ktorá sa venuje návrhom a realizáciou škálovateľných webových aplikácií. Podporujem a vyvíjam viaceré startupy. Vo voľnom čase cestujem po svete, behám po horách, píšem blogy a tvorím kreatívne videá.