Compartilhar via


Referência da linguagem Python do Lakeflow Spark Declarative Pipelines

Esta seção tem detalhes para a interface de programação Python do SDP (Lakeflow Spark Declarative Pipelines).

pipelines visão geral do módulo

As funções do Python do Lakeflow Spark Declarative Pipelines são definidas no pyspark.pipelines módulo (importado como dp). Seus pipelines implementados com a API do Python devem importar este módulo:

from pyspark import pipelines as dp

Observação

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

Pipelines do Apache Spark™

O Apache Spark inclui pipelines declarativos a partir do Spark 4.1, disponíveis por meio do pyspark.pipelines módulo. O Databricks Runtime estende esses recursos de software livre com APIs adicionais e integrações para uso de produção gerenciada.

O código escrito com o módulo de software pipelines livre é executado sem modificação no Azure 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 pipelines módulo foi chamado dlt anteriormente no Azure Databricks. Para obter detalhes e mais informações sobre as diferenças do Apache Spark, consulte o que aconteceu com @dlt?.

Funções para definições de conjunto de dados

Os pipelines usam decoradores python para definir conjuntos de dados, como exibições materializadas e tabelas de streaming. Consulte Funções para definir conjuntos de dados.

Referência de API

Requisitos de codificação para pipelines do Python

Veja a seguir requisitos importantes ao implementar pipelines com a interface Python do SDP (Lakeflow Spark Declarative Pipelines):

  • O SDP avalia o código-fonte que define um pipeline várias vezes durante o planejamento e as execuções dos pipelines. As funções do Python que definem conjuntos de dados devem incluir apenas o código necessário para definir a tabela ou exibição. A lógica arbitrária do Python incluída nas definições do conjunto de dados pode levar a um comportamento inesperado.
  • Não tente implementar a lógica de monitoramento personalizada em suas definições de conjunto de dados. Consulte Definir o monitoramento personalizado de pipelines com ganchos de evento.
  • A função usada para definir um conjunto de dados deve retornar um DataFrame do Spark. Não inclua lógica em suas definições de conjunto de dados que não estão relacionadas a um DataFrame retornado.
  • Nunca use métodos que salvem ou escrevam em arquivos ou tabelas como parte do código do conjunto de dados do pipeline.

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

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

O que aconteceu?@dlt

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

Diferenças entre DLT, SDP e Apache Spark

A tabela a seguir mostra as diferenças de sintaxe e funcionalidade entre DLT, Pipelines Declarativos do Lakeflow Spark e Pipelines Declarativos do Apache Spark.

Area Sintaxe DLT Sintaxe SDP (Lakeflow e Apache, quando aplicável) Disponível no Apache Spark
Importações import dlt from pyspark import pipelines (as dpopcionalmente) Yes
Tabela de streaming @dlt.table com um dataframe de streaming @dp.table Yes
Visão materializada @dlt.table com um dataframe de processamento em lote @dp.materialized_view Yes
View @dlt.view @dp.temporary_view Yes
Fluxo de acréscimo @dlt.append_flow @dp.append_flow Yes
SQL – transmissão CREATE STREAMING TABLE ... CREATE STREAMING TABLE ... Yes
SQL – materializado CREATE MATERIALIZED VIEW ... CREATE MATERIALIZED VIEW ... Yes
SQL – fluxo CREATE FLOW ... CREATE FLOW ... Yes
Log 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
Expectations @dlt.expect(...) dp.expect(...) Não
Modo contínuo Configuração de pipeline com disparador contínuo (mesmo) Não
Coletor @dlt.create_sink(...) dp.create_sink(...) Yes