Definir configurações de pipeline para Delta Live Tables

Este artigo fornece detalhes sobre como definir configurações de pipeline para Delta Live Tables. Delta Live Tables fornece uma interface de usuário para definir e editar configurações de pipeline. A interface do usuário também fornece uma opção para exibir e editar configurações em JSON.

Nota

Você pode definir a maioria das configurações com a interface do usuário ou uma especificação JSON. Algumas opções avançadas só estão disponíveis usando a configuração JSON.

O Databricks recomenda familiarizar-se com as configurações do Delta Live Tables usando a interface do usuário. Se necessário, você pode editar diretamente a configuração JSON no espaço de trabalho. Os arquivos de configuração JSON também são úteis ao implantar pipelines em novos ambientes ou ao usar a CLI ou a API REST.

Para obter uma referência completa às definições de configuração JSON do Delta Live Tables, consulte Configurações do pipeline do Delta Live Tables.

Nota

Como os recursos de computação são totalmente gerenciados para pipelines sem servidor, as configurações de computação, como Enhanced Autoscaling, políticas de cluster, tipos de instância e tags de cluster, não estão disponíveis quando você seleciona Serverless (Public Preview) para um pipeline.

Você ainda pode passar parâmetros de configuração para um pipeline sem servidor, mas qualquer parâmetro definido em um clusters objeto na configuração JSON é ignorado.

Para saber mais sobre como habilitar pipelines de DLT sem servidor, entre em contato com sua equipe de conta do Azure Databricks.

Escolha uma edição do produto

Selecione a edição do produto Delta Live Tables com os recursos mais adequados aos seus requisitos de pipeline. Estão disponíveis as seguintes edições do produto:

  • Core para executar cargas de trabalho de ingestão de streaming. Selecione a Core edição se o pipeline não exigir recursos avançados, como captura de dados de alteração (CDC) ou expectativas do Delta Live Tables.
  • Pro para executar cargas de trabalho de streaming e CDC. A Pro edição do produto suporta todos os Core recursos, além de suporte para cargas de trabalho que exigem a atualização de tabelas com base em alterações nos dados de origem.
  • Advanced para executar cargas de trabalho de ingestão de streaming, cargas de trabalho CDC e cargas de trabalho que exigem expectativas. A Advanced edição do produto suporta os recursos das edições e Pro também suporta a imposição de restrições de qualidade de dados com as Core expectativas do Delta Live Tables.

Você pode selecionar a edição do produto ao criar ou editar um pipeline. Você pode selecionar uma edição diferente para cada pipeline. Consulte a página do produto Delta Live Tables.

Nota

Se o pipeline incluir recursos não suportados pela edição do produto selecionada, por exemplo, expectativas, você receberá uma mensagem de erro com o motivo do erro. Em seguida, você pode editar o pipeline para selecionar a edição apropriada.

Escolha um modo de pipeline

Você pode atualizar seu pipeline continuamente ou com gatilhos manuais com base no modo de pipeline. Consulte Execução contínua vs. acionada de pipeline.

Selecionar uma política de cluster

Os usuários devem ter permissões para implantar a computação para configurar e atualizar os pipelines do Delta Live Tables. Os administradores de espaço de trabalho podem configurar políticas de cluster para fornecer aos usuários acesso a recursos de computação para Delta Live Tables. Consulte Definir limites na computação do pipeline Delta Live Tables.

Nota

Configurar bibliotecas de código-fonte

Você pode usar o seletor de arquivos na interface do usuário do Delta Live Tables para configurar o código-fonte que define seu pipeline. O código-fonte do pipeline é definido em notebooks Databricks ou em scripts SQL ou Python armazenados em arquivos de espaço de trabalho. Ao criar ou editar seu pipeline, você pode adicionar um ou mais blocos de anotações ou arquivos de espaço de trabalho ou uma combinação de blocos de anotações e arquivos de espaço de trabalho.

Como o Delta Live Tables analisa automaticamente as dependências do conjunto de dados para construir o gráfico de processamento para seu pipeline, você pode adicionar bibliotecas de código-fonte em qualquer ordem.

Você também pode modificar o arquivo JSON para incluir o código-fonte Delta Live Tables definido em scripts SQL e Python armazenados em arquivos de espaço de trabalho. O exemplo a seguir inclui blocos de anotações e arquivos de espaço de trabalho:

{
  "name": "Example pipeline 3",
  "storage": "dbfs:/pipeline-examples/storage-location/example3",
  "libraries": [
    { "notebook": { "path": "/example-notebook_1" } },
    { "notebook": { "path": "/example-notebook_2" } },
    { "file": { "path": "/Workspace/Users/<user-name>@databricks.com/Apply_Changes_Into/apply_changes_into.sql" } },
    { "file": { "path": "/Workspace/Users/<user-name>@databricks.com/Apply_Changes_Into/apply_changes_into.py" } }
  ]
}

Especificar um local de armazenamento

Você pode especificar um local de armazenamento para um pipeline que publica no metastore do Hive. A principal motivação para especificar um local é controlar o local de armazenamento de objetos para dados gravados pelo seu pipeline.

Como todas as tabelas, dados, pontos de verificação e metadados para pipelines do Delta Live Tables são totalmente gerenciados pelo Delta Live Tables, a maior parte da interação com os conjuntos de dados do Delta Live Tables acontece por meio de tabelas registradas no metastore do Hive ou no Unity Catalog.

Especificar um esquema de destino para tabelas de saída de pipeline

Embora opcional, você deve especificar um destino para publicar tabelas criadas pelo seu pipeline sempre que for além do desenvolvimento e teste de um novo pipeline. A publicação de um pipeline em um destino torna os conjuntos de dados disponíveis para consulta em outro lugar em seu ambiente do Azure Databricks. Consulte Publicar dados do Delta Live Tables no metastore do Hive ou Usar o Unity Catalog com seus pipelines do Delta Live Tables.

Definir suas configurações de computação

Nota

Como os recursos de computação são totalmente gerenciados para pipelines sem servidor, as configurações de computação não estão disponíveis quando você seleciona Serverless (Public Preview) para um pipeline.

Cada pipeline Delta Live Tables tem dois clusters associados:

  • O updates cluster processa atualizações de pipeline.
  • O maintenance cluster executa tarefas de manutenção diárias.

A configuração usada por esses clusters é determinada pelo atributo especificado nas configurações do clusters pipeline.

Você pode adicionar configurações de computação que se aplicam apenas a um tipo específico de cluster usando rótulos de cluster. Há três rótulos que você pode usar ao configurar clusters de pipeline:

Nota

A configuração do rótulo do cluster pode ser omitida se você estiver definindo apenas uma configuração de cluster. O default rótulo é aplicado às configurações de cluster se nenhuma configuração para o rótulo for fornecida. A configuração do rótulo do cluster é necessária somente se você precisar personalizar as configurações para diferentes tipos de cluster.

  • O default rótulo define as configurações de computação a serem aplicadas aos updates clusters e maintenance ao . A aplicação das mesmas configurações a ambos os clusters melhora a confiabilidade das execuções de manutenção, garantindo que as configurações necessárias, por exemplo, credenciais de acesso a dados para um local de armazenamento, sejam aplicadas ao cluster de manutenção.
  • O maintenance rótulo define as configurações de computação para aplicar somente ao maintenance cluster. Você também pode usar o maintenance rótulo para substituir as configurações definidas pelo default rótulo.
  • O updates rótulo define as configurações a serem aplicadas somente ao updates cluster. Use o updates rótulo para definir configurações que não devem ser aplicadas ao maintenance cluster.

As configurações definidas usando os default rótulos e updates são mescladas para criar a configuração final para o updates cluster. Se a mesma configuração for definida usando ambos os default rótulos e updates , a configuração definida com o updates rótulo substituirá a configuração definida com o default rótulo.

O exemplo a seguir define um parâmetro de configuração do Spark que é adicionado somente à configuração do updates cluster:

{
  "clusters": [
    {
      "label": "default",
      "autoscale": {
        "min_workers": 1,
        "max_workers": 5,
        "mode": "ENHANCED"
      }
    },
    {
      "label": "updates",
      "spark_conf": {
         "key": "value"
      }
    }
  ]
}

O Delta Live Tables fornece opções semelhantes para configurações de cluster como outras computações no Azure Databricks. Como outras configurações de pipeline, você pode modificar a configuração JSON para clusters para especificar opções não presentes na interface do usuário. Consulte Computação.

Nota

  • Como o tempo de execução do Delta Live Tables gerencia o ciclo de vida dos clusters de pipeline e executa uma versão personalizada do Databricks Runtime, não é possível definir manualmente algumas configurações de cluster em uma configuração de pipeline, como a versão do Spark ou nomes de cluster. Consulte Atributos de cluster que não são configuráveis pelo usuário.
  • Você pode configurar pipelines Delta Live Tables para aproveitar o Photon. Veja O que é Photon?.

Selecionar tipos de instância para executar um pipeline

Por padrão, o Delta Live Tables seleciona os tipos de instância para os nós de driver e de trabalho que executam seu pipeline, mas você também pode configurar manualmente os tipos de instância. Por exemplo, talvez você queira selecionar tipos de instância para melhorar o desempenho do pipeline ou resolver problemas de memória ao executar o pipeline. Você pode configurar tipos de instância ao criar ou editar um pipeline com a API REST ou na interface do usuário Delta Live Tables.

Para configurar tipos de instância ao criar ou editar um pipeline na interface do usuário do Delta Live Tables:

  1. Clique no botão Configurações .
  2. Na seção Avançado das configurações do pipeline, nos menus suspensos Tipo de trabalhador e Tipo de driver, selecione os tipos de instância para o pipeline.

Para configurar tipos de instância nas configurações JSON do pipeline, clique no botão JSON e insira as configurações de tipo de instância na configuração do cluster:

Nota

Para evitar atribuir recursos desnecessários ao maintenance cluster, este exemplo usa o updates rótulo para definir os tipos de instância apenas para o updates cluster. Para atribuir os tipos de instância a ambos e updatesmaintenance clusters, use o default rótulo ou omita a configuração do rótulo. O default rótulo é aplicado às configurações de cluster de pipeline se nenhuma configuração para o rótulo for fornecida. Consulte Definir suas configurações de computação.

{
  "clusters": [
    {
      "label": "updates",
      "node_type_id": "Standard_D12_v2",
      "driver_node_type_id": "Standard_D3_v2",
      "..." : "..."
    }
  ]
}

Use o dimensionamento automático para aumentar a eficiência e reduzir o uso de recursos

Use o Autoscaling Avançado para otimizar a utilização de cluster de seus pipelines. O Autoscaling aprimorado adiciona recursos adicionais somente se o sistema determinar que esses recursos aumentarão a velocidade de processamento do pipeline. Os recursos são liberados quando não são mais necessários, e os clusters são desligados assim que todas as atualizações de pipeline são concluídas.

Para saber mais sobre o Enhanced Autoscaling, incluindo detalhes de configuração, consulte Otimizar a utilização de cluster de pipelines Delta Live Tables com Enhanced Autoscaling.

Atrasar o desligamento da computação

Como um cluster do Delta Live Tables é desligado automaticamente quando não está em uso, a referência a uma política de cluster definida autotermination_minutes na sua configuração de cluster resulta num erro. Para controlar o comportamento de desligamento do cluster, você pode usar o modo de desenvolvimento ou produção ou usar a pipelines.clusterShutdown.delay configuração na configuração do pipeline. O exemplo seguinte define o valor pipelines.clusterShutdown.delay como 60 segundos:

{
    "configuration": {
      "pipelines.clusterShutdown.delay": "60s"
    }
}

Quando o modo production está ativado, o valor predefinido de pipelines.clusterShutdown.delay é 0 seconds. Quando o modo development está ativado, o valor predefinido é 2 hours.

Criar um cluster de nó único

Se você definir num_workers como 0 nas configurações de cluster, o cluster será criado como um cluster de nó único. Configurar um cluster de dimensionamento automático e definir min_workers como 0 e max_workers como 0 também criará um cluster de Nó Único.

Se você configurar um cluster de dimensionamento automático e definir apenas min_workers como 0, o cluster não será criado como um cluster de nó único. O cluster tem pelo menos um trabalhador ativo em todos os momentos até ser terminado.

Uma configuração de cluster de exemplo para criar um cluster de Nó Único em Tabelas Dinâmicas Delta:

{
    "clusters": [
      {
        "num_workers": 0
      }
    ]
}

Configurar tags de cluster

Pode utilizar« etiquetas de cluster para monitorizar a utilização dos clusters de pipeline. Adicione etiquetas de cluster na interface do utilizador do Delta Live Tables quando criar ou editar um pipeline ou editar as definições de JSON dos clusters de pipeline.

Configuração de armazenamento na nuvem

Para acessar o armazenamento do Azure, você deve configurar os parâmetros necessários, incluindo tokens de acesso, usando spark.conf as configurações em suas configurações de cluster. Para obter um exemplo de configuração de acesso a uma conta de armazenamento do Azure Data Lake Storage Gen2 (ADLS Gen2), consulte Acessar credenciais de armazenamento com segurança com segredos em um pipeline.

Parametrizar pipelines

O código Python e SQL que define seus conjuntos de dados pode ser parametrizado pelas configurações do pipeline. A parametrização permite os seguintes casos de uso:

  • Separar caminhos longos e outras variáveis do seu código.
  • Reduzir a quantidade de dados processados em ambientes de desenvolvimento ou preparação para acelerar os testes.
  • Reutilizar a mesma lógica de transformação para processar a partir de várias fontes de dados.

O exemplo a seguir usa o startDate valor de configuração para limitar o pipeline de desenvolvimento a um subconjunto dos dados de entrada:

CREATE OR REFRESH LIVE TABLE customer_events
AS SELECT * FROM sourceTable WHERE date > '${mypipeline.startDate}';
@dlt.table
def customer_events():
  start_date = spark.conf.get("mypipeline.startDate")
  return read("sourceTable").where(col("date") > start_date)
{
  "name": "Data Ingest - DEV",
  "configuration": {
    "mypipeline.startDate": "2021-01-02"
  }
}
{
  "name": "Data Ingest - PROD",
  "configuration": {
    "mypipeline.startDate": "2010-01-02"
  }
}

Intervalo de gatilho de pipelines

Você pode usar pipelines.trigger.interval para controlar o intervalo de gatilho para um fluxo atualizando uma tabela ou um pipeline inteiro. Como um pipeline acionado processa cada tabela apenas uma vez, o pipelines.trigger.interval é usado apenas com pipelines contínuos.

O Databricks recomenda a configuração pipelines.trigger.interval em tabelas individuais devido a diferentes padrões para streaming versus consultas em lote. Defina o valor em um pipeline somente quando o processamento exigir o controle de atualizações para todo o gráfico de pipeline.

Você define pipelines.trigger.interval em uma tabela usando spark_conf em Python ou SET em SQL:

@dlt.table(
  spark_conf={"pipelines.trigger.interval" : "10 seconds"}
)
def <function-name>():
    return (<query>)
SET pipelines.trigger.interval=10 seconds;

CREATE OR REFRESH LIVE TABLE TABLE_NAME
AS SELECT ...

Para definir pipelines.trigger.interval em um pipeline, adicione-o configuration ao objeto nas configurações do pipeline:

{
  "configuration": {
    "pipelines.trigger.interval": "10 seconds"
  }
}

Permitir que usuários não administradores visualizem os logs de driver de um pipeline habilitado para Catálogo Unity

Por padrão, apenas o proprietário do pipeline e os administradores do espaço de trabalho têm permissão para exibir os logs de driver do cluster que executa um pipeline habilitado para Catálogo Unity. Você pode habilitar o acesso aos logs de driver para qualquer usuário com permissões CAN MANAGE, CAN VIEW ou CAN RUN adicionando o seguinte parâmetro de configuração do Spark ao configuration objeto nas configurações de pipeline:

{
  "configuration": {
    "spark.databricks.acl.needAdminPermissionToViewLogs": "false"
  }
}

Adicionar notificações por e-mail para eventos de pipeline

Você pode configurar um ou mais endereços de e-mail para receber notificações quando ocorrer o seguinte:

  • Uma atualização de pipeline é concluída com êxito.
  • Uma atualização de pipeline falha, seja com um erro retryable ou não retryable. Selecione esta opção para receber uma notificação para todas as falhas de pipeline.
  • Uma atualização de pipeline falha com um erro não recorrível (fatal). Selecione esta opção para receber uma notificação somente quando ocorrer um erro não recorrível.
  • Um único fluxo de dados falha.

Para configurar notificações por e-mail ao criar ou editar um pipeline:

  1. Clique em Adicionar notificação.
  2. Insira um ou mais endereços de e-mail para receber notificações.
  3. Clique na caixa de seleção para cada tipo de notificação a ser enviada para os endereços de e-mail configurados.
  4. Clique em Adicionar notificação.

Controlar o gerenciamento de lápides para consultas SCD tipo 1

As seguintes configurações podem ser usadas para controlar o comportamento do gerenciamento de marca de exclusão para DELETE eventos durante o processamento do SCD tipo 1:

  • pipelines.applyChanges.tombstoneGCThresholdInSeconds: defina esse valor para corresponder ao maior intervalo esperado, em segundos, entre dados fora de ordem. O padrão é 172800 segundos (2 dias).
  • pipelines.applyChanges.tombstoneGCFrequencyInSeconds: Esta definição controla a frequência, em segundos, com que as lápides são verificadas para limpeza. O padrão é 1800 segundos (30 minutos).

Consulte APPLY CHANGES API: Simplifique a captura de dados de alteração no Delta Live Tables.

Configurar permissões de pipeline

Você deve ter a CAN MANAGE permissão ou IS OWNER no pipeline para gerenciar permissões nele.

  1. Na barra lateral, clique em Delta Live Tables.

  2. Selecione o nome de um pipeline.

  3. Clique no menu Elipse Verticalkebab e selecione Permissões.

  4. Em Configurações de Permissões, selecione o menu suspenso Selecionar Usuário, Grupo ou Entidade de Serviço... e selecione um usuário, grupo ou entidade de serviço.

    Caixa de diálogo Configurações de permissões

  5. Selecione uma permissão no menu suspenso de permissão.

  6. Clique em Adicionar.

  7. Clique em Guardar.

Ativar armazenamento de estado RocksDB para Delta Live Tables

Você pode habilitar o gerenciamento de estado baseado em RocksDB definindo a seguinte configuração antes de implantar um pipeline:

{
  "configuration": {
     "spark.sql.streaming.stateStore.providerClass": "com.databricks.sql.streaming.state.RocksDBStateStoreProvider"
  }
}

Para saber mais sobre o armazenamento de estado RocksDB, incluindo recomendações de configuração para RocksDB, consulte Configurar armazenamento de estado RocksDB no Azure Databricks.