Aracılığıyla paylaş


Lakeflow Spark Deklaratif İşlem Hatları Python dil referansı

Bu bölümde Lakeflow Spark Bildirimli İşlem Hatları (SDP) Python programlama arabiriminin ayrıntıları yer alır.

pipelines modüle genel bakış

Lakeflow Spark Bildirimli İşlem Hatları Python işlevleri modülde pyspark.pipelines tanımlanır (olarak dpiçeri aktarılır). Python API'si ile uygulanan işlem hatlarınızın şu modülü içeri aktarması gerekir:

from pyspark import pipelines as dp

Uyarı

İşlem hatları modülü yalnızca işlem hattı bağlamında kullanılabilir. İşlem hatlarının dışında çalışan Python'da kullanılamaz. İşlem hattı kodunu düzenleme hakkında daha fazla bilgi için bkz. Lakeflow Pipelines Düzenleyicisi ile ETL işlem hatları geliştirme ve hatalarını ayıklama.

Apache Spark™ işlem hatları

Apache Spark, modül aracılığıyla kullanılabilen Spark 4.1'de başlayan bildirim temelli işlem hatlarınıpyspark.pipelines içerir. Databricks Runtime, bu açık kaynak özelliklerini yönetilen üretim kullanımı için ek API'ler ve tümleştirmelerle genişletir.

Açık kaynak pipelines modülüyle yazılan kod, Azure Databricks'te değişiklik yapılmadan çalıştırılır. Aşağıdaki özellikler Apache Spark'ın bir parçası değildir:

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

Bu pipelines modülü daha önce Azure Databricks'te dlt olarak adlandırılıyordu. tr-TR: Detaylar ve Apache Spark ile olan farklar hakkında daha fazla bilgi için Ne oldu? @dlt bölümüne bakın.

Veri kümesi tanımları için işlevler

İşlem boru hatları, materyalize edilmiş görünümler ve akış tabloları gibi veri kümelerini tanımlamak için Python dekoratörlerini kullanır. Bkz. Veri kümelerini tanımlamak için işlevler.

API referansı

Python işlem hatları için kodlama gereksinimleri

Lakeflow Spark Bildirimli İşlem Hatları (SDP) Python arabirimiyle işlem hatları uygularken aşağıdaki önemli gereksinimler şunlardır:

  • SDP, planlama ve işlem hattı çalıştırmaları sırasında işlem hattını birden çok kez tanımlayan kodu değerlendirir. Veri kümelerini tanımlayan Python işlevleri yalnızca tabloyu veya görünümü tanımlamak için gereken kodu içermelidir. Veri kümesi tanımlarına eklenen rastgele Python mantığı beklenmeyen davranışlara yol açabilir.
  • Veri kümesi tanımlarınızda özel izleme mantığı uygulamayı denemeyin. Bkz. Olay kancalarıyla işlem hatlarının özel izlemesini tanımlama.
  • Veri kümesini tanımlamak için kullanılan işlevin Spark DataFrame döndürmesi gerekir. Veri kümesi tanımlarınıza döndürülen Bir DataFrame ile ilgili olmayan mantık eklemeyin.
  • İşlem hattı veri kümesi kodunuzun bir parçası olarak dosyaları veya tabloları kaydeden veya bu tablolara yazan yöntemleri asla kullanmayın.

İşlem hattı kodunda hiçbir zaman kullanılmaması gereken Apache Spark işlemleri örnekleri:

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

Ne oldu?@dlt

Daha önce Azure Databricks, işlem hattı işlevselliğini desteklemek için modülünü dlt kullanıyordu. Modülün dlt yerini modül almıştır pyspark.pipelines . kullanmaya devam dltedebilirsiniz, ancak Databricks kullanılmasını pipelinesönerir.

DLT, SDP ve Apache Spark arasındaki farklar

Aşağıdaki tabloda DLT, Lakeflow Spark Bildirimli İşlem Hatları ve Apache Spark Bildirimli İşlem Hatları arasındaki söz dizimi ve işlevsellik farklılıkları gösterilmektedir.

Area DLT söz dizimi SDP Söz Dizimi (Lakeflow ve Apache, uygun olduğunda) Apache Spark'ta kullanılabilir
İçeri aktarmalar import dlt from pyspark import pipelines (as dpisteğe bağlı olarak) Yes
Akış tablosu @dlt.table akış veri çerçevesi ile @dp.table Yes
Gerçekleştirilmiş görünüm @dlt.table toplu veri çerçevesi ile @dp.materialized_view Yes
View @dlt.view @dp.temporary_view Yes
Veri ekleme akışı @dlt.append_flow @dp.append_flow Yes
SQL – akış CREATE STREAMING TABLE ... CREATE STREAMING TABLE ... Yes
SQL – maddileştirilmiş CREATE MATERIALIZED VIEW ... CREATE MATERIALIZED VIEW ... Yes
SQL – veri akışı CREATE FLOW ... CREATE FLOW ... Yes
Olay günlüğü spark.read.table("event_log") spark.read.table("event_log") Hayı
Değişiklikleri Uygula (CDC) dlt.apply_changes(...) dp.create_auto_cdc_flow(...) Hayı
Expectations @dlt.expect(...) dp.expect(...) Hayı
Sürekli mod Sürekli tetikleyicili işlem hattı konfigürasyonu (aynı) Hayı
Lavabo @dlt.create_sink(...) dp.create_sink(...) Yes