Verwendung des STACKIT Spark-Images mit zusätzlichen Paketen
STACKIT stellt gebrauchsfertige Spark-Images zur Verfügung, die für die Ausführung von Spark-Workloads auf Kubernetes optimiert sind. Sie können diese Images direkt in Ihren Workflows-DAGs verwenden und sie zur Laufzeit um zusätzliche Python-Pakete erweitern. In diesem Tutorial erfahren Sie, wie Sie Ihren DAG so konfigurieren, dass er ein STACKIT Spark-Image verwendet und zusätzliche Bibliotheken spontan installiert.
-
Erstellen Sie einen DAG in Ihrem Projekt
dags/my_extra_packages_dag.pyimport pendulumfrom airflow.decorators import dagfrom stackit_workflows.airflow_plugin.decorators import stackit# Specify the STACKIT Spark imagedefault_kwargs = {"image": "schwarzit-xx-sit-dp-customer-artifactory-docker-local.jfrog.io/stackit-spark:spark3.5.3-0.1.2"}@dag(schedule=None,start_date=pendulum.datetime(2021, 1, 1, tz="UTC"),catchup=False,tags=["demo"],dag_id="07_extra_packages",)def packages():# The STACKIT Spark image provides a writable Python environment.# You can install extra libraries at runtime using pip, conda, or mamba.@stackit.spark_kubernetes_task(**default_kwargs)def tell_jokes():import subprocess, sys# Install an extra package at runtime inside the Spark containersubprocess.check_call([sys.executable, "-m", "pip", "install", "Joking"])import Jokingprint(Joking.random_joke())tell_jokes()packages()Funktionsweise
Abschnitt betitelt „Funktionsweise“-
STACKIT Spark-Image
- Definiert über den Parameter
image(spark3.5.3-0.1.2). - Bietet eine gewartete Spark-Laufzeitumgebung sowie eine beschreibbare Python-Umgebung.
- Sie müssen kein eigenes Basis-Image erstellen, um zu beginnen.
- Definiert über den Parameter
-
Installation zur Laufzeit
- Da die Umgebung beschreibbar ist, können Sie zusätzliche Bibliotheken mit pip, conda oder mamba installieren.
- mamba wird empfohlen, da es Abhängigkeiten schneller auflöst und optimierte Binärdateien liefert.
-
Best Practice
- Installationen zur Laufzeit verbrauchen bei jedem Start des Pods Ressourcen.
- Erstellen Sie für Aufgaben, die Sie häufig ausführen, ein benutzerdefiniertes Image auf Basis des STACKIT Spark-Images, in dem alle erforderlichen Bibliotheken vorinstalliert sind.
-
-
Übertragen Sie den DAG in Ihre Umgebung und lösen Sie ihn in Airflow aus.
-
Überprüfen Sie die Task-Logs
- Sie werden sehen, wie pip das Paket
Jokingabruft und installiert. - Der Task gibt anschließend einen zufälligen Witz aus der installierten Bibliothek aus.
- Sie werden sehen, wie pip das Paket
-
Überprüfen Sie den Spark-Pod
- Bestätigen Sie, dass der Pod das von Ihnen angegebene STACKIT Spark-Image verwendet.
- Die zusätzliche Bibliothek ist nur während der Laufzeit dieses Tasks verfügbar.
-