メインコンテンツまでスキップ

Lakeflow Pipelines Python 言語リファレンス

LakeFlow PipelinesのPythonインターフェイスは、dpとしてインポートされるpyspark.pipelinesモジュールで定義されています。

pipelinesモジュールの概要

LakeFlow PipelinesのPython関数は、dpとしてインポートされるpyspark.pipelinesモジュールで定義されています。Python API を使用して実装されたパイプラインでは、このモジュールをインポートする必要があります。

Python
from pyspark import pipelines as dp
注記

パイプライン モジュールは、パイプラインのコンテキストでのみ使用できます。 パイプラインの外部で実行される Python では使用できません。パイプライン コードの編集の詳細については、 「 Lakeflow Pipelines Editor を使用したETLパイプラインの開発とデバッグ」を参照してください。

Apache Spark™パイプライン

Apache Spark には Spark 4.1 以降の 宣言型パイプライン が含まれており、 pyspark.pipelinesモジュールを通じて利用できます。Databricks Runtime 、追加のAPIsと統合を使用してこれらのオープン ソース機能を拡張し、管理された本番運用で使用できるようにします。

オープンソースのpipelinesモジュールで記述されたコードは、変更せずに Databricks で実行されます。次の機能は Apache Spark の一部ではありません。

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

pipelinesモジュールは以前、Databricks ではdltと呼ばれていました。詳細およびApache Sparkとの違いについては、 @dltに何が起こったか?」を参照してください。

データセット定義のための関数

パイプラインは、マテリアライズドビューやストリーミングテーブルなどのデータセットを定義するためにPythonデコレーターを使用します。 データセットを定義する関数を参照してください。

APIリファレンス

Pythonパイプラインのコーディング要件

The following are important requirements when you implement LakeFlow PipelinesのPythonインターフェースを使用してパイプラインを実装する際の重要な要件は以下のとおりです:

  • LakeFlow Pipelinesは、計画中およびパイプラインの実行中に、パイプラインを定義するコードを複数回評価します。データセットを定義するPython関数には、テーブルまたはビューの定義に必要なコードのみを含める必要があります。データセット定義に含まれる任意のPythonロジックは、予期しない動作につながる可能性があります。
  • データセット定義にカスタムモニタリングロジックを実装しようとしないでください。 「イベント フックを使用したパイプラインのカスタム モニタリングの定義」を参照してください。
  • データセットを定義するために使用される関数は、Spark DataFrame を返す必要があります。返される DataFrame に関連しないロジックをデータセット定義に含めないでください。
  • パイプライン データセット コードの一部として、ファイルやテーブルに保存または書き込むメソッドを使用しないでください。

パイプライン コードで使用すべきでない Apache Spark 操作の例:

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

@dltに何が起こったのでしょうか?

以前は、Databricks はパイプライン機能をサポートするためにdltモジュールを使用していました。dltモジュールはpyspark.pipelinesモジュールに置き換えられました。引き続きdlt使用することもできますが、Databricks ではpipelinesの使用を推奨しています。

DLT、LakeFlow Pipelines、および Apache Spark 宣言型パイプラインの違い

次の表に、DLT、LakeFlow Pipelines、およびApache Spark宣言型パイプラインの構文と機能の違いを示します。

LakeFlow PipelinesがApache Spark宣言型パイプラインと何を共有し、追加しているかの機能レベルの比較については、Apache Spark宣言型パイプラインを参照してください。

SDPプロジェクト仕様へのパイプライン構成のプロパティごとのマッピングについては、パイプラインプロパティリファレンスを参照してください。

注記

Databricksドキュメントでは、Databricks製品は LakeFlow Pipelines と呼ばれ、それが拡張するオープンソースフレームワークは Apache Spark™ Declarative PipelinesSDP )です。両者は相互運用可能ですが、機能が異なります。たとえば、AUTO CDC APIsはLakeFlow Pipelinesでのみ利用できます。

領域

DLT構文

SDP 構文 ( LakeFlowおよびApache 、該当する場合)

Apache Sparkで利用可能

輸入品

import dlt

from pyspark import pipelinesas dp 、オプション)

はい

ストリーミングテーブル

@dlt.table ストリーミングデータフレーム

@dp.table

はい

マテリアライズドビュー

@dlt.table バッチデータフレーム

@dp.materialized_view

はい

ビュー

@dlt.view

@dp.temporary_view

はい

フローの追加

@dlt.append_flow

@dp.append_flow

はい

フローを更新する

利用不可

@dp.update_flow

No

SQL – ストリーミング

CREATE STREAMING TABLE ...

CREATE STREAMING TABLE ...

はい

SQL – マテリアライズド

CREATE MATERIALIZED VIEW ...

CREATE MATERIALIZED VIEW ...

はい

SQL – フロー

CREATE FLOW ...

CREATE FLOW ...

はい

イベントログ

spark.read.table("event_log")

spark.read.table("event_log")

No

変更を適用 (CDC)

dlt.apply_changes(...)

dp.create_auto_cdc_flow(...)

No

エクスペクテーション

@dlt.expect(...)

dp.expect(...)

No

連続モード

連続トリガーを使用したパイプライン構成

(同じ)

No

シンク

@dlt.create_sink(...)

dp.create_sink(...)

はい

ForEachBatch シンク

利用不可

@dp.foreach_batch_sink(...)

No

領域

DLT構文

SDP 構文 ( LakeFlowおよびApache 、該当する場合)

Apache Sparkで利用可能

輸入品

import dlt

from pyspark import pipelinesas dp 、オプション)

はい

ストリーミングテーブル

@dlt.table ストリーミングデータフレーム

@dp.table

はい

マテリアライズドビュー

@dlt.table バッチデータフレーム

@dp.materialized_view

はい

ビュー

@dlt.view

@dp.temporary_view

はい

フローの追加

@dlt.append_flow

@dp.append_flow

はい

フローを更新する

利用不可

@dp.update_flow

No

SQL – ストリーミング

CREATE STREAMING TABLE ...

CREATE STREAMING TABLE ...

はい

SQL – マテリアライズド

CREATE MATERIALIZED VIEW ...

CREATE MATERIALIZED VIEW ...

はい

SQL – フロー

CREATE FLOW ...

CREATE FLOW ...

はい

イベントログ

spark.read.table("event_log")

spark.read.table("event_log")

No

変更を適用 (CDC)

dlt.apply_changes(...)

dp.create_auto_cdc_flow(...)

No

エクスペクテーション

@dlt.expect(...)

dp.expect(...)

No

連続モード

連続トリガーを使用したパイプライン構成

(同じ)

No

シンク

@dlt.create_sink(...)

dp.create_sink(...)

はい

ForEachBatch シンク

利用不可

@dp.foreach_batch_sink(...)

No