Zum Inhalt springen

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.

  1. Erstellen Sie einen DAG in Ihrem Projekt

    dags/my_extra_packages_dag.py

    import pendulum
    from airflow.decorators import dag
    from stackit_workflows.airflow_plugin.decorators import stackit
    # Specify the STACKIT Spark image
    default_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 container
    subprocess.check_call([sys.executable, "-m", "pip", "install", "Joking"])
    import Joking
    print(Joking.random_joke())
    tell_jokes()
    packages()
    • 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.
    • 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.
  2. Ü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 Joking abruft und installiert.
      • Der Task gibt anschließend einen zufälligen Witz aus der installierten Bibliothek aus.
    • Ü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.