• xing_icon_webseite
  • LinkedIn - Grau Kreis
  • Facebook
  • Grau YouTube Icon
  • Instagram

© 2019 by Five1

(+49) 6222 / 935-460

Otto-Hahn-Straße 1c
Walldorf, 69190
Deutschland

Speed Up your ETL in Amazon Web Services


Five1 beschleunigt ETL-Prozesse durch den Einsatz von Pandas UDFs in PySpark auf EMR Clustern in der Amazon Cloud


Quelle: Emile Guillemot/Unsplash



Herausforderung des Kunden


ETL-Prozesse (Extraktion, Transformation, Laden) sind essentiell für den Betrieb eines Data-Warehouses. Um so wichtiger ist es, dass diese Prozesse zuverlässig und schnell laufen. Bei diesen Prozessen kommen ggf. komplexe mathematische Funktionen zum Einsatz, um die benötigten Transformationen durchzuführen. Sowohl das Umsetzen als auch das schnelle Ausführen dieser Funktionen kann zu einer Herausforderung werden. Im vorliegenden Fall war die benötigte Zeit bis zum Ausführen des Prozesses so groß, dass ein zeitnahes Reporting auf der Grundlage aktueller Daten nicht möglich war.



Projektbeschreibung - wie hat Five1 dem Kunden weitergeholfen?


User Defined Functions (UDFs) ermöglichen es, auch sehr komplexe Funktionen auf die Einträge von Tabellen (in Spark: Dataframes) anzuwenden. Gewöhnliche Spark UDFs können sehr langsam sein und ein Bottleneck in ETL Prozessen darstellen.

Eine Möglichkeit, die Performance um das 3 bis 100-fache zu verbessern, ist ein Umstieg von Spark auf Pandas UDFs. Unter diesem Link wird dies weiter beleuchtet.


Pandas UDFs führen die Operationen und Berechnungen nicht zeilen- sondern spaltenweise durch, wodurch die Operationen vektorisiert und dadurch beschleunigt werden können. Um von Spark auf Pandas UDFs zu wechseln, muss das pandas package verwendet, aber auch die Logik der UDFs angepasst werden!


Abbildung 1: Anders als Spark UDFs werden Pandas UDFs pandas.Series übergeben - nicht jeder Zeileneintrag einzeln wie bei Spark UDFs


Technische Highlights:


· ETL Jobs

· PySpark

· Pandas UDFs

· Laufzeitverbesserung



Lösungen und Ergebnis


Five1 konnte die Funktionen durch die Verwendung von UDFs für die Transformationen kompakt und verständlich umsetzen. Durch einen Umstieg von Spark auf Pandas UDFs konnte zudem die Laufzeit des ETL-Prozesses signifikant verbessert werden, wodurch ein Reporting auf der Grundlage aktuellster Daten ermöglicht werden konnte.