Data Lineage Analysis for PySpark and Python ORM Libraries
Analýza datových toků pro PySpark a ORM knihovny jazyka Python
diplomová práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/181592Identifikátory
SIS: 247480
Kolekce
- Kvalifikační práce [11218]
Autor
Vedoucí práce
Oponent práce
Škoda, Petr
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Informatika - Softwarové a datové inženýrství
Katedra / ústav / klinika
Katedra distribuovaných a spolehlivých systémů
Datum obhajoby
6. 6. 2023
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
data lineage|python|symbolická analýza|dátové tokyKlíčová slova (anglicky)
data lineage|data flow|python|symbolic analysisVo svete ETL nástrojov a spracovania dát je Python jedným z najčastejšie použí- vaných jazykov. Skripty napísané v jazyku Python, ktoré definujú manipuláciu s dá- tami, zvyčajne používajú rovnakú knižnicu, PySpark, čo je Python API pre framework Spark, spoločne s databázovými knižnicami, využívajúc ich ORM funkcionalitu. Táto funkcionalita zvyčajne funguje podobným spôsobom vo väčšine relevantných knižníc. Nedávno bol MANTA Flow, vysoko automatizovaný nástroj na analýzu data lineage, rozšírený o skener jazyka Python a teraz je vo fáze rozširovania o podporu bežných frameworkov. V tejto práci sme analyzovali knižnicu PySpark a technológiu SQLAlchemy ORM s cieľom rozšíriť Python skener firmy MANTA o podporu týchto dvoch často používaných nástro- jov. V prípade knižnice PySpark sme navrhli a implementovali jadro pluginu pre skener jazyka Python, ktorý podporuje elementárnu funkcionalitu. Plugin je schopný analyzo- vať rôzne vstupné a výstupné možnosti DataFramov dostupné v PySparku pre súborové aj databázové dátové zdroje a je schopný propagácie dátových tokov počas transformá- cií s primeranou úrovňou overaproximácie, ako sme v práci demonštrovali. V prípade SQLAlchemy ORM sme navrhli riešenie, ktoré umožní skeneru analyzovať zdrojový kód využívajúci funkctionalitu ORM a jeho jadro by bolo možné použiť aj pre...
In the world of ETL tools and data processing, Python is one of the main languages used in practice. Python scripts that define data manipulations usually use the same Python framework, PySpark, which is the Python API for the Spark framework, alongside database libraries, using their ORM features. These ORM features usually work in a similar way in most of the relevant libraries. Recently, MANTA Flow, a highly automated data lineage analysis tool, was extended with a Python language scanner and now it is in the phase of being extended to support more commonly used frameworks. In this work, we analyzed the PySpark library and the SQLAlchemy ORM technology in order to extend the MANTA's Python scanner with the support for these two frequently used tools. In case of the PySpark library, we designed and implemented a core of the plugin to the Python scanner which supports elementary functionality. The plugin is capable of analyzing various DataFrame input and output options available in PySpark for both file and database data sources, and it is able to propagate data flows during transformations with reasonable level of overapproximation, as demonstrated in the work. In case of the SQLAlchemy ORM, we designed a solution that would allow the scanner to analyze the ORM source code and its core could be used to...