Pular para o conteúdo principal

LakeFlow Spark Pipeline declarativo Referência da linguagem Python

Esta seção contém detalhes sobre a interface de programação Python do pipeline declarativo Spark (SDP) LakeFlow .

pipelines Visão geral do módulo

As funções Python do pipeline declarativo LakeFlow Spark são definidas no módulo pyspark.pipelines (importado como dp). Seu pipeline implementado com a API Python deve importar este módulo:

Python
from pyspark import pipelines as dp
nota

O módulo pipeline só está disponível no contexto de um pipeline. Não está disponível em Python executado fora do pipeline. Para obter mais informações sobre como editar código pipeline , consulte Desenvolver e depurar pipeline ETL com o LakeFlow Pipelines Editor.

PipelineApache Spark™

Apache Spark inclui um pipeline declarativo a partir do Spark 4.1, disponível por meio do módulo pyspark.pipelines . O Databricks Runtime estende esses recursos de código aberto com APIs e integrações adicionais para uso em produção.

Código escrito com o módulo código aberto pipelines execução sem modificação no Databricks. Os seguintes recursos não fazem parte do Apache Spark:

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

O módulo pipelines era anteriormente chamado de dlt no Databricks. Para detalhes e mais informações sobre as diferenças em relação ao Apache Spark, consulte O que aconteceu com @dlt?.

Funções para definições dataset

O pipeline utiliza decoradores Python para definir conjuntos de dados, como visualizações materializadas e tabelas de transmissão. Consulte Funções para definir o conjunto de dados.

Referência de API

Considerações para o pipeline Python

Os seguintes pontos são importantes a serem considerados ao implementar um pipeline com a interface Python LakeFlow Spark Declarative Pipeline (SDP):

  • O SDP avalia o código que define um pipeline várias vezes durante o planejamento e a execução do pipeline. As funções Python que definem um conjunto de dados devem incluir apenas o código necessário para definir a tabela ou view. A inclusão de lógica arbitrária Python nas definições dataset pode levar a comportamentos inesperados.
  • Não tente implementar lógica de monitoramento personalizada nas definições do seu dataset . Consulte Definir monitoramento personalizado de pipeline com ganchos de evento.
  • A função usada para definir um dataset deve retornar um Spark DataFrame. Não inclua lógica nas definições do seu dataset que não esteja relacionada a um DataFrame retornado.
  • Nunca utilize métodos que salvam ou gravam em arquivos ou tabelas como parte do código do seu dataset pipeline .

Exemplos de operações do Apache Spark que nunca devem ser usadas em código de pipeline:

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

O que aconteceu com @dlt?

Anteriormente, o Databricks usava o módulo dlt para dar suporte à funcionalidade de pipeline. O módulo dlt foi substituído pelo módulo pyspark.pipelines . Você ainda pode usar dlt, mas o Databricks recomenda o uso de pipelines.

Diferenças entre DLT, SDP e Apache Spark

A tabela a seguir mostra as diferenças de sintaxe e funcionalidade entre DLT, pipeline declarativo LakeFlow Spark e pipeline declarativo Apache Spark .

Área

sintaxe DLT

Sintaxe SDP (LakeFlow e Apache, quando aplicável)

Disponível no Apache Spark

Importações

import dlt

from pyspark import pipelines (as dp, opcionalmente)

Sim

Tabela de transmissão

@dlt.table com um dataframe de jogos

@dp.table

Sim

Visualização materializada

@dlt.table com um dataframe de lotes

@dp.materialized_view

Sim

View

@dlt.view

@dp.temporary_view

Sim

Fluxo de anexação

@dlt.append_flow

@dp.append_flow

Sim

SQL – show

CREATE STREAMING TABLE ...

CREATE STREAMING TABLE ...

Sim

SQL – materializado

CREATE MATERIALIZED VIEW ...

CREATE MATERIALIZED VIEW ...

Sim

SQL – fluxo

CREATE FLOW ...

CREATE FLOW ...

Sim

Registro de eventos

spark.read.table("event_log")

spark.read.table("event_log")

Não

Aplicar alterações (CDC)

dlt.apply_changes(...)

dp.create_auto_cdc_flow(...)

Não

Expectativas

@dlt.expect(...)

dp.expect(...)

Não

Modo contínuo

Configuração de pipeline com gatilho contínuo

(mesmo)

Não

Afundar

@dlt.create_sink(...)

dp.create_sink(...)

Sim