Usar Python com pipelines autônomos
É possível criar e refresh exibições materializadas autônomas e tabelas de transmissão a partir de um Notebook usando Python. Desenvolva seu pipeline em um notebook Python e execute-o com spark.sql(). Isso permite gerenciar pipelines autônomos junto com seus outros fluxos de trabalho de notebook baseados em Python.
Fonte Python para pipelines autônomos exige um Notebook anexado ao **compute serverless de uso geral**. Não é possível usar Python para criar ou refresh pipelines autônomos de um warehouse do Databricks SQL, porque um warehouse executa comandos SQL, não Notebooks Python. Para usar um SQL warehouse em vez disso, consulte Usar visões materializadas autônomas e Usar tabelas de transmissão autônomas.
Requisitos
Para criar e refresh pipelines autônomos com Python, é necessário um Notebook anexado a um compute serverless geral no Databricks Runtime 18,1 ou acima. Para a lista completa de requisitos, incluindo disponibilidade regional e permissões, consulte Notebooks.
Como funciona
Em um Notebook Python, passe as mesmas instruções que executaria de um SQL warehouse do Databricks para spark.sql(). A sintaxe da view materializada autônoma e da tabela de transmissão é idêntica; apenas a forma como a instrução é submetida difere. Assim como em um warehouse, cada instrução CREATE ou REFRESH executa um pipeline serverless para processar a operação.
A sessão spark está disponível por default em Notebooks Databricks, portanto, nenhuma importação é necessária.
Criar uma visualização materializada
O exemplo a seguir cria a visualização materializada mv1 a partir 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 detalhes completos de CREATE MATERIALIZED VIEW, como atualizações agendadas e acionadas, consulte Criar uma visualização materializada.
Criar tabela de transmissão
O exemplo a seguir cria a tabela de transmissão sales da tabela raw_data:
spark.sql("""
CREATE OR REFRESH STREAMING TABLE sales
AS SELECT product, price FROM STREAM raw_data
""")
Para obter todos os detalhes de CREATE STREAMING TABLE, incluindo o carregamento de arquivos com o Auto Loader e a programação, consulte Usar tabelas de transmissão autônomas.
refresh uma view materializada ou tabela de transmissão
Utilize uma instrução REFRESH para atualizar uma tabela autônoma com os dados mais recentes de sua origem:
spark.sql("REFRESH MATERIALIZED VIEW mv1")
spark.sql("REFRESH STREAMING TABLE sales")
No compute geral serverless, as atualizações são síncronas. Atualizações assíncronas (a palavra-chave ASYNC) não têm suporte. Consulte Compute geral serverless.
Parametrizar declarações
Para passar valores do seu código Python para uma instrução em vez de codificá-los rigidamente, use marcadores de parâmetros nomeados no SQL e forneça seus valores por meio do argumento args de spark.sql(). Utilize 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, view ou esquema, porque os identificadores não podem ser substituídos como valores de string simples.
O exemplo a seguir parametriza tanto o nome da visualização materializada quanto 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 cláusula IDENTIFIER.
Executar outros comandos
É possível executar qualquer instrução de view materializada independente ou de tabela de transmissão de um Notebook Python, ao passá-la para spark.sql(), incluindo instruções para programar refresh, alterar uma tabela ou descartar uma tabela. Para entender como usar visualizações materializadas e tabelas de transmissão, incluindo sintaxe SQL, consulte Usar visualizações materializadas autônomas e Usar tabelas de transmissão autônomas.
Limitações
Visualizações materializadas autônomas e tabelas de transmissão criadas em compute serverless geral possuem limitações adicionais, como a falta de suporte para refreshes assíncronos e a ausência de atribuição de custos por tabela. Para a lista completa, consulte Compute Geral Serverless.