Use Python com pipelines independentes

Você pode criar e atualizar exibições materializadas autônomas e tabelas de streaming de um bloco de anotações usando Python. Crie seu pipeline em um notebook Python e execute-o com spark.sql(). Isso permite que você gerencie pipelines autônomos junto com seus outros fluxos de trabalho de notebook baseados em Python.

O código-fonte Python para pipelines independentes exige um notebook vinculado à computação geral sem servidor. Você não pode usar Python para criar ou atualizar pipelines autônomos a partir de um warehouse do Databricks SQL, porque um warehouse executa instruções SQL, não notebooks Python. Para usar um SQL warehouse em vez dele, consulte Usar exibições materializadas autônomas e Usar tabelas de transmissão contínua autônomas.

Importante

A criação e a atualização de visões materializadas autônomas e tabelas de streaming a partir de um notebook na computação sem servidor de uso geral estão em Beta e disponíveis em regiões selecionadas. Consulte Notebooks.

Requirements

Para criar e atualizar pipelines autônomos com Python, você precisa de um notebook anexado à computação geral sem servidor no Databricks Runtime 18.1 ou superior. Para obter a lista completa de requisitos, incluindo disponibilidade e permissões regionais, consulte Notebooks.

Como funciona

Em um notebook Python, passe os mesmos comandos que você executaria em um Databricks SQL warehouse para spark.sql(). A exibição materializada autônoma e a sintaxe da tabela de streaming são idênticas; somente a maneira como você envia a instrução difere. Assim como em um warehouse, cada instrução CREATE ou REFRESH executa um pipeline sem servidor para processar a operação.

A spark sessão está disponível por padrão em blocos de anotações Azure Databricks, portanto, nenhuma importação é necessária.

Criar uma visão materializada

O exemplo a seguir cria a exibição materializada mv1 da tabela base base_table1:

spark.sql("""
  CREATE OR REPLACE MATERIALIZED VIEW mv1
  AS SELECT
    date,
    sum(sales) AS sum_of_sales
  FROM base_table1
  GROUP BY date
""")

Para obter detalhes completos CREATE MATERIALIZED VIEW , como atualizações agendadas e disparadas, consulte Criar uma exibição materializada.

Criar uma tabela de streaming

O exemplo a seguir cria a tabela de streaming sales a partir da tabela raw_data:

spark.sql("""
  CREATE OR REFRESH STREAMING TABLE sales
  AS SELECT product, price FROM STREAM raw_data
""")

Para obter detalhes completos CREATE STREAMING TABLE , incluindo o carregamento de arquivos com o Carregador Automático e o agendamento, consulte Usar tabelas de streaming autônomas.

Atualizar uma exibição materializada ou uma tabela de streaming

Use uma REFRESH instrução para atualizar uma tabela autônoma com os dados mais recentes de sua fonte:

spark.sql("REFRESH MATERIALIZED VIEW mv1")
spark.sql("REFRESH STREAMING TABLE sales")

Na computação geral sem servidor, as atualizações são síncronas. Não há suporte para atualizações assíncronas (a ASYNC palavra-chave). Consulte a computação geral sem servidor.

Parametrizar instruções

Para passar valores do seu código Python para uma instrução, em vez de codificá-los diretamente, use marcadores de parâmetro nomeados no SQL e forneça esses valores por meio do argumento args de spark.sql(). Use um marcador como :min_sales diretamente para valores literais. Envolva o marcador em IDENTIFIER() apenas quando o parâmetro for um nome de objeto, como uma tabela, visão ou schema, porque identificadores não podem ser substituídos como valores de string simples.

O exemplo a seguir parametriza o nome de exibição materializado e um valor de filtro:

mv_name = "main.sales.regional_sales"
min_sales = 1000

spark.sql("""
  CREATE OR REPLACE MATERIALIZED VIEW IDENTIFIER(:mv)
  AS SELECT
    region,
    sum(sales) AS sum_of_sales
  FROM base_table1
  WHERE sales > :min_sales
  GROUP BY region
""", args={
  "mv": mv_name,
  "min_sales": min_sales,
})

Para obter mais informações, consulte marcadores de parâmetro e IDENTIFIER cláusula.

Executar outras instruções

Você pode executar qualquer instrução independente de visão materializada ou de tabela de streaming em um notebook Python, passando-a para spark.sql(), incluindo instruções para agendar atualizações, alterar uma tabela ou excluir uma tabela. Para entender como usar exibições materializadas e tabelas de streaming, incluindo sintaxe SQL, consulte Usar exibições materializadas autônomas e usar tabelas de streaming autônomas.

Limitações

Exibições materializadas autônomas e tabelas de streaming criadas na computação geral sem servidor têm limitações adicionais, como nenhum suporte para atualizações assíncronas e nenhuma atribuição de custo por tabela. Para obter a lista completa, consulte a computação geral sem servidor.

Recursos adicionais