Pular para o conteúdo principal

LakeFlow Spark Pipeline declarativo Referência da linguagem Python

A interface Python do Lakeflow Spark Declarative Pipelines (SDP) é definida no módulo pyspark.pipelines, importada como dp.

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

Requisitos de codificação para pipeline Python

Os seguintes são requisitos importantes ao implementar um pipeline com a interface Python do 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 .

nota

Na documentação da Databricks, **SDP** e **Lakeflow SDP** referem-se ao Lakeflow Spark Declarative Pipelines, o produto Databricks. O projeto de código aberto é sempre escrito na íntegra como Apache Spark Declarative Pipelines . Os dois são interoperáveis, mas diferem em recursos; por exemplo, as AUTO CDC APIs estão disponíveis apenas no Lakeflow Spark Declarative Pipelines.

Á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

Atualizar fluxo

Indisponível

@dp.update_flow

Não

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

Coletor ForEachBatch

Indisponível

@dp.foreach_batch_sink(...)

Não