Verwenden von Python mit eigenständigen Pipelines

Sie können eigenständige materialisierte Ansichten und Streamingtabellen aus einem Notizbuch mithilfe von Python erstellen und aktualisieren. Erstellen Sie Ihre Pipeline in einem Python-Notebook und führen Sie sie mit spark.sql() aus. Auf diese Weise können Sie eigenständige Pipelines zusammen mit Ihren anderen Python-basierten Notizbuchworkflows verwalten.

Python-Quellcode für eigenständige Pipelines erfordert ein Notebook, das an serverloses allgemeines Computing angehängt ist. Sie können Python nicht verwenden, um eigenständige Pipelines aus einem Databricks SQL Warehouse zu erstellen oder zu aktualisieren, da ein Warehouse SQL-Anweisungen ausführt, nicht Python Notizbücher. Informationen zur Verwendung eines SQL Warehouse finden Sie unter Eigenständige materialisierte Sichten verwenden und Eigenständige Streaming-Tabellen verwenden.

Von Bedeutung

Das Erstellen und Aktualisieren eigenständiger materialisierter Ansichten und Streamingtabellen in einem Notebook auf serverloser Allzweckrechenleistung ist in Beta und in ausgewählten Regionen verfügbar. Siehe Notizbücher.

Requirements

Um eigenständige Pipelines mit Python zu erstellen und zu aktualisieren, benötigen Sie ein Notizbuch, das mit serverlosen allgemeinen Berechnungen auf Databricks Runtime 18.1 oder höher verbunden ist. Die vollständige Liste der Anforderungen, einschließlich regionaler Verfügbarkeit und Berechtigungen, finden Sie unter "Notizbücher".

So funktioniert es

Übergeben Sie in einem Python-Notebook dieselben Anweisungen an spark.sql(), die Sie in einem Databricks SQL-Warehouse ausführen würden. Die Syntax für eigenständige materialisierte Ansichten und Streaming-Tabellen ist identisch; nur die Art, wie Sie die Anweisung übermitteln, unterscheidet sich. Wie bei einem Lager führt jede CREATE- oder REFRESH-Anweisung eine serverlose Pipeline aus, um den Vorgang zu verarbeiten.

Die spark Sitzung ist standardmäßig in Azure Databricks Notizbüchern verfügbar, sodass kein Import erforderlich ist.

Erstellen einer materialisierten Ansicht

Im folgenden Beispiel wird die materialisierte Sicht mv1 von der Basistabelle base_table1 erstellt:

spark.sql("""
  CREATE OR REPLACE MATERIALIZED VIEW mv1
  AS SELECT
    date,
    sum(sales) AS sum_of_sales
  FROM base_table1
  GROUP BY date
""")

Vollständige CREATE MATERIALIZED VIEW Details, z. B. geplante und ausgelöste Aktualisierungen, finden Sie unter Erstellen einer materialisierten Ansicht.

Erstellen Sie eine Streamingtabelle

Im folgenden Beispiel wird die Streamingtabelle sales aus der raw_data Tabelle erstellt:

spark.sql("""
  CREATE OR REFRESH STREAMING TABLE sales
  AS SELECT product, price FROM STREAM raw_data
""")

Ausführliche CREATE STREAMING TABLE Informationen, einschließlich des Ladens von Dateien mit automatischem Laden und Planen, finden Sie unter Verwenden von eigenständigen Streamingtabellen.

Materialisierte Ansicht oder Streaming-Tabelle aktualisieren

Verwenden Sie eine REFRESH Anweisung, um eine eigenständige Tabelle mit den neuesten Daten aus der Quelle zu aktualisieren:

spark.sql("REFRESH MATERIALIZED VIEW mv1")
spark.sql("REFRESH STREAMING TABLE sales")

Bei serverlosen allgemeinen Berechnungen sind Aktualisierungen synchron. Asynchrone Aktualisierungen (das ASYNC Schlüsselwort) werden nicht unterstützt. Siehe Serverless allgemeine Rechenleistung.

Parametrisierte Anweisungen

Um Werte aus Ihrem Python-Code an eine Anweisung zu übergeben, anstatt sie fest zu codieren, verwenden Sie benannte Parametermarkierungen in der SQL-Anweisung und übergeben Sie deren Werte über das Argument args von spark.sql(). Verwenden Sie einen Platzhalter wie :min_sales direkt für Literalwerte. Umschließen Sie die Markierung IDENTIFIER() nur, wenn der Parameter ein Objektname ist, z. B. eine Tabelle, Ansicht oder ein Schema, da Bezeichner nicht als einfache Zeichenfolgenwerte ersetzt werden können.

Im folgenden Beispiel werden sowohl der materialisierte Ansichtsname als auch ein Filterwert parametrisiert:

mv_name = "main.sales.regional_sales"
min_sales = 1000

spark.sql("""
  CREATE OR REPLACE MATERIALIZED VIEW IDENTIFIER(:mv)
  AS SELECT
    region,
    sum(sales) AS sum_of_sales
  FROM base_table1
  WHERE sales > :min_sales
  GROUP BY region
""", args={
  "mv": mv_name,
  "min_sales": min_sales,
})

Weitere Informationen finden Sie unter Parametermarkierungen und IDENTIFIER Klauseln.

Andere Anweisungen ausführen

Sie können jede eigenständige materialisierte Ansichts- oder Streamingtabellen-Anweisung aus einem Python-Notizbuch ausführen, indem Sie diese spark.sql()an übergeben, einschließlich Anweisungen zum Planen von Aktualisierungen, Ändern einer Tabelle oder Ablegen einer Tabelle. Informationen zur Verwendung materialisierter Ansichten und Streamingtabellen, einschließlich SQL-Syntax, finden Sie unter Verwenden von eigenständigen materialisierten Ansichten und Verwenden von eigenständigenStreamingtabellen.

Limitations

Eigenständige materialisierte Ansichten und Streamingtabellen, die auf serverlosen allgemeinen Berechnungen erstellt wurden, weisen zusätzliche Einschränkungen auf, z. B. keine Unterstützung für asynchrone Aktualisierungen und keine Kostenzuordnung pro Tabelle. Die vollständige Liste finden Sie unter "Serverless general compute".

Weitere Ressourcen