Pular para o conteúdo principal

Referência da linguagem Python de LakeFlow Pipelines

A interface Python do Lakeflow Pipelines é definida no módulo pyspark.pipelines, importada como dp.

pipelines Visão geral do módulo

As funções Python de LakeFlow Pipelines são definidas no módulo pyspark.pipelines (importado como dp). Seus pipelines implementados com a API Python devem 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(...)

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

A seguir, estão os requisitos importantes ao implementar pipelines com a interface Python dos LakeFlow Pipelines:

  • Os Lakeflow Pipelines avaliam o código que define um pipeline várias vezes durante o planejamento e as execuções do pipeline. As funções Python que definem datasets devem incluir apenas o código necessário para definir a tabela ou view. A lógica Python arbitrária incluída nas definições de dataset pode levar a um comportamento inesperado.
  • 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, LakeFlow Pipelines e Apache Spark Declarative Pipelines

A tabela a seguir mostra as diferenças na sintaxe e funcionalidade entre DLT, LakeFlow Pipelines e Apache Spark Declarative Pipelines.

Para uma comparação em nível de recurso do que os LakeFlow Pipelines compartilham e adicionam a Apache Spark Declarative Pipelines, veja Apache Spark Declarative Pipelines.

Para um mapeamento de propriedade por propriedade da configuração do pipeline para a especificação do projeto SDP, consulte Referência de propriedades do pipeline.

nota

Na documentação da Databricks, o produto Databricks é chamado de Lakeflow pipelines , e a estrutura de código aberto que ele estende é Apache Spark™ Declarative Pipelines ( SDP ). Os dois são interoperáveis, mas diferem em recursos—por exemplo, as AUTO CDC APIs estão disponíveis apenas em Lakeflow 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

Á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