Udostępnij za pomocą


Lakeflow Spark dokumentacja języka Python dla potoków deklaratywnych

Ta sekcja zawiera szczegółowe informacje dotyczące deklaratywnego interfejsu programowania języka Python dla potoków Lakeflow Spark (SDP).

pipelines omówienie modułu

Funkcje Python dla deklaratywnych potoków Lakeflow Spark są definiowane w module pyspark.pipelines (zaimportowane jako dp). Rurociągi zaimplementowane za pomocą interfejsu API języka Python muszą zaimportować ten moduł.

from pyspark import pipelines as dp

Uwaga / Notatka

Moduł 'pipelines' jest dostępny tylko w kontekście potoku. Nie jest on dostępny w języku Python uruchomionym poza potokami. Aby uzyskać więcej informacji na temat edytowania kodu potoku, zobacz Tworzenie i debugowanie potoków ETL za pomocą Lakeflow Pipelines Editor.

Potoki danych Apache Spark™

Platforma Apache Spark obejmuje potoki deklaratywne od wersji Spark 4.1, dostępne za pośrednictwem modułu pyspark.pipelines. Środowisko Databricks Runtime rozszerza te funkcje typu open source o dodatkowe interfejsy API i integracje na potrzeby zarządzanego użycia produkcyjnego.

Kod napisany za pomocą modułu open source pipelines jest uruchamiany bez modyfikacji w usłudze Azure Databricks. Następujące funkcje nie są częścią platformy Apache Spark:

  • dp.create_auto_cdc_flow
  • dp.create_auto_cdc_from_snapshot_flow
  • @dp.expect(...)
  • @dp.temporary_view

Moduł pipelines był wcześniej nazywany dlt w usłudze Azure Databricks. Aby uzyskać szczegółowe informacje na temat różnic z platformy Apache Spark, zobacz Co się stało z @dlt?.

Funkcje dla definicji zestawów danych

Potoki danych używają dekoratorów języka Python do definiowania zestawów danych, takich jak widoki materializowane i tabele przesyłania strumieniowego. Zobacz Funkcje, aby zdefiniować zestawy danych.

Odniesienie do API

Zagadnienia dotyczące potoków języka Python

Poniżej przedstawiono ważne aspekty dotyczące implementowania potoków za pomocą deklaratywnego interfejsu języka Python Spark Lakeflow (SDP):

  • Protokół SDP ocenia kod, który definiuje potok wielokrotnie podczas planowania i uruchamiania potoku. Funkcje języka Python definiujące zestawy danych powinny zawierać tylko kod wymagany do zdefiniowania tabeli lub widoku. Dowolna logika języka Python zawarta w definicjach zestawu danych może prowadzić do nieoczekiwanego zachowania.
  • Nie próbuj implementować niestandardowej logiki monitorowania w definicjach zestawu danych. Zobacz Definiowanie niestandardowego monitorowania potoków za pomocą hooków zdarzeń.
  • Funkcja używana do definiowania zestawu danych musi zwracać ramkę danych platformy Spark. Nie uwzględniaj logiki w definicjach zestawu danych, które nie odnoszą się do zwracanej ramki danych.
  • Nigdy nie używaj metod zapisywania lub pisania w plikach ani tabelach w ramach kodu zbioru danych potoku.

Przykłady operacji platformy Apache Spark, które nigdy nie powinny być używane w kodzie w potoku przetwarzania:

  • collect()
  • count()
  • toPandas()
  • save()
  • saveAsTable()
  • start()
  • toTable()

Co się stało z @dlt?

Wcześniej usługa Azure Databricks używała modułu dlt do obsługi funkcji potoku. Moduł dlt został zastąpiony przez moduł pyspark.pipelines. Nadal możesz używać dlt, ale Databricks zaleca użycie pipelines.

Różnice między bibliotekami DLT, SDP i Apache Spark

W poniższej tabeli przedstawiono różnice w składni i funkcjonalności między potokami DLT, Deklaratywnymi potokami Lakeflow Spark i Deklaratywnymi potokami Apache Spark.

Area Składnia DLT Składnia protokołu SDP (Lakeflow i Apache, jeśli ma to zastosowanie) Dostępne na platformie Apache Spark
Importy import dlt from pyspark import pipelines (as dpopcjonalnie) Tak
Tabela strumieniowa @dlt.table z ramką danych strumieniowych @dp.table Tak
Zmaterializowany widok @dlt.table z ramką danych w trybie wsadowym @dp.materialized_view Tak
View @dlt.view @dp.temporary_view Tak
Proces dołączania @dlt.append_flow @dp.append_flow Tak
SQL — przesyłanie strumieniowe CREATE STREAMING TABLE ... CREATE STREAMING TABLE ... Tak
SQL — zmaterializowany CREATE MATERIALIZED VIEW ... CREATE MATERIALIZED VIEW ... Tak
SQL — przepływ CREATE FLOW ... CREATE FLOW ... Tak
Dziennik zdarzeń spark.read.table("event_log") spark.read.table("event_log") Nie.
Stosowanie zmian (CDC) dlt.apply_changes(...) dp.create_auto_cdc_flow(...) Nie.
Expectations @dlt.expect(...) dp.expect(...) Nie.
Tryb ciągły Konfiguracja potoku z wyzwalaczem stałym (to samo) Nie.
Zlew @dlt.create_sink(...) dp.create_sink(...) Tak