Compartilhar via


Definir configurações de pipeline para o Delta Live Tables

Este artigo tem detalhes sobre como definir as configurações de pipeline as Tabelas Dinâmicas Delta. As Tabelas Dinâmicas Delta têm uma interface do usuário para definir e editar configurações de pipeline. A interface do usuário também tem uma opção para exibir e editar configurações em JSON.

Observação

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 se familiarizar 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 workspace. Os arquivos de configuração do JSON também são úteis ao implantar pipelines em novos ambientes ou usar a CLI ou a REST API.

Para obter uma referência completa sobre definições de configuração do JSON das Tabelas Dinâmicas Delta, confira Configurações de pipeline das Tabelas Dinâmicas Delta.

Observação

  • Como os recursos de computação são totalmente gerenciados para pipelines de pipelines DLT sem servidor, configurações de computação como Dimensionamento Automático Avançado, políticas de cluster, tipos de instância e marcas de cluster não estão disponíveis na interface do usuário do Delta Live Tables quando você seleciona Sem Servidor para um pipeline.
  • Não é possível adicionar manualmente as configurações de computação em um objeto clusters na configuração JSON para um pipeline de pipelines DLT sem servidor e tentar fazer isso resulta em um erro.

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

Escolher uma edição do produto

Selecione a edição do produto das Tabelas Dinâmicas Delta com os mais adequados recursos para seus requisitos de pipeline. As edições de produto a seguir estão disponíveis:

  • Core para executar cargas de trabalho de ingestão de transmissão. Selecione a edição Core se o pipeline não exigir recursos avançados, como a CDC (captura de dados de alterações) ou expectativas do Delta Live Tables.
  • Pro para executar cargas de trabalho de ingestão de transmissão e de CDC. A edição do produto Pro dá suporte a todos os recursos Core, 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 transmissão, cargas de trabalho de CDC e cargas de trabalho que exigem expectativas. A edição do produto Advanced dá suporte aos recursos das edições e das edições Core e Pro também dá suporte à imposição de restrições de qualidade de dados com expectativas do Delta Live Tables.

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

Observação: se o pipeline incluir recursos não compatíveis com a edição de produto selecionada, como expectativas, você receberá uma mensagem de erro explicando o motivo do erro. Em seguida, você pode editar o pipeline para selecionar a edição adequada.

Escolher um modo de pipeline

Você pode atualizar o pipeline continuamente ou com gatilhos manuais com base no modo de pipeline. Confira Execução contínua versus disparada de pipeline.

Selecionar uma política de cluster

Os usuários devem ter permissão para implantar a computação para configurar e atualizar pipelines das Tabelas Dinâmicas Delta. Os administradores do workspace podem configurar políticas de cluster para fornecer aos usuários acesso aos recursos de computação para o Delta Live Tables. Consulte Definir limites em clusters de pipeline de Tabelas Dinâmicas Delta.

Observação

  • As políticas de cluster são opcionais. Verifique com o administrador do workspace se você não tem privilégios de computação necessários para o Delta Live Tables.

  • Para garantir que os valores padrão da política de cluster sejam aplicados corretamente, defina o valorapply_policy_default_values como true nas configurações do cluster na configuração do pipeline:

    {
      "clusters": [
        {
          "label": "default",
          "policy_id": "<policy-id>",
          "apply_policy_default_values": true
        }
      ]
    }
    

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 o pipeline. O código-fonte do pipeline é definido em notebooks do Databricks ou scripts do SQL ou Python armazenados em arquivos de espaço de trabalho. Ao criar ou editar o pipeline, você pode adicionar um ou mais notebooks ou arquivos de workspace ou uma combinação de notebooks e arquivos de workspace.

Como o Delta Live Tables analisa automaticamente as dependências do conjunto de dados para construir o grafo de processamento do 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 do Delta Live Tables definido em scripts SQL e Python armazenados em arquivos de workspace. O exemplo a seguir inclui notebooks e arquivos do workspace:

{
  "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 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 conjuntos de dados do Delta Live Tables ocorre por meio de tabelas registradas no metastore do Hive ou no Catálogo do Unity.

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

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

Definir as configurações de computação

Observação

Como os recursos de computação são totalmente gerenciados para pipelines DLT sem servidor, configurações de computação não estão disponíveis ao selecionar Sem Servidor para um pipeline.

Cada pipeline do Delta Live Tables tem dois clusters associados:

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

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

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

Observação

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

  • O rótulo default define as configurações de computação a serem aplicadas aos clusters updates e maintenance. 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, como credenciais de acesso a dados para um local de armazenamento, sejam aplicadas ao cluster de manutenção.
  • O rótulo maintenance define as configurações de computação que se aplicam somente ao cluster maintenance. Você também pode usar o rótulo maintenance para substituir as configurações definidas pelo rótulo default.
  • O rótulo updates define as configurações que se aplicam somente ao cluster updates. Use o rótulo updates para definir as configurações que não devem ser aplicadas ao cluster maintenance.

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

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

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

As Tabelas Dinâmicas Delta têm 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.

Observação

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

Selecionar tipos de instância para executar um pipeline

Por padrão, o Delta Live Tables seleciona os tipos de instância para o driver e os nós de trabalho que executam o 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 do 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 Advanced das configurações do pipeline, nos menus suspensos do tipo Worker e tipo Driver, selecione os tipos de instância para o pipeline.

Para definir 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:

Observação

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

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

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

Use o Dimensionamento Automático Aprimorado para otimizar a utilização dos pipelines pelo cluster. O Dimensionamento Automático Aprimorado adiciona recursos adicionais somente quando o sistema determina 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 Dimensionamento Automático Aprimorado, incluindo detalhes de configuração, consulte Otimizar a utilização de cluster de pipelines do Delta Live Tables com Dimensionamento Automático Aprimorado.

Atrasar desligamento de computação

Como um cluster das Tabelas Dinâmicas Delta é desligado automaticamente quando não está em uso, a referência a uma política de cluster que define autotermination_minutes na configuração do cluster resulta em um erro. Para controlar o comportamento de desligamento do cluster, use o modo de desenvolvimento ou de produção ou a configuração pipelines.clusterShutdown.delay na configuração do pipeline. O seguinte exemplo define o valor de pipelines.clusterShutdown.delay como 60 segundos:

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

Quando o modo production estiver habilitado, o valor padrão de pipelines.clusterShutdown.delay é 0 seconds. Quando o modo development estiver habilitado, o valor padrão é 2 hours.

Criar um cluster de nó único

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

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

Um exemplo de configuração de cluster para criar um cluster de nó único no Delta Live Tables seria o seguinte:

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

Configurar marcas de cluster

Você pode usar marcas de cluster para monitorar o uso de seus clusters de pipeline. Adicione marcas de cluster na interface do usuário do Delta Live Tables ao criar ou editar um pipeline ou editando as configurações de JSON para seus clusters de pipeline.

Configuração de armazenamento em nuvem

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

Parametrizar declarações de conjunto de dados em Python ou SQL

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:

  • Separação de caminhos longos e outras variáveis do código.
  • Redução do volume de dados processados em ambientes de desenvolvimento ou de preparo para acelerar os testes.
  • Reutilização da mesma lógica de transformação para processamento em várias fontes de dados.

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

CREATE OR REFRESH MATERIALIZED VIEW 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 de um fluxo atualizando uma tabela ou um pipeline inteiro. Como um pipeline disparado processa cada tabela apenas uma vez, a opção pipelines.trigger.interval é usada apenas com pipelines contínuos.

A Databricks recomenda a configuração pipelines.trigger.interval em tabelas individuais devido aos padrões diferentes para consultas de streaming e em lote. Defina o valor em um pipeline somente quando o processamento exigir o controle de atualizações para todo o grafo de pipeline.

Defina 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 MATERIALIZED VIEW TABLE_NAME
AS SELECT ...

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

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

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

Por padrão, somente o proprietário do pipeline e os administradores do workspace têm permissão para exibir os logs do driver do cluster que executa um pipeline habilitado para o Catálogo do Unity. Você pode habilitar o acesso aos logs de driver para qualquer usuário com as permissões PODE GERENCIAR, PODE EXIBIR ou PODE EXECUTAR adicionando o seguinte parâmetro de configuração do Spark ao objeto configuration 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 email para receber notificações quando o seguinte ocorrer:

  • Uma atualização de pipeline for concluída com êxito.
  • Falha em uma atualização de pipeline, com um erro com nova tentativa ou não. Selecione essa opção para receber uma notificação de todas as falhas do pipeline.
  • Uma atualização de pipeline falhar com um erro não repetível (fatal). Selecione essa opção para receber uma notificação somente quando ocorrer um erro sem nova tentativa.
  • Um único fluxo de dados falhar.

Para configurar notificações por email ao criar ou editar um pipeline:

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

Controla o gerenciamento de marca de exclusão para consultas SCD tipo 1

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

  • pipelines.applyChanges.tombstoneGCThresholdInSeconds: defina esse valor para corresponder ao intervalo esperado mais alto, em segundos, entre os dados fora de ordem. O padrão é 172800 segundos (2 dias).
  • pipelines.applyChanges.tombstoneGCFrequencyInSeconds: essa configuração controla com que frequência, em segundos, as marcas de exclusão são verificadas para limpeza. O padrão é 1800 segundos (30 minutos).

Consulte As APIs APPLY CHANGES: Simplifique a captura de dados de alterações com o Delta Live Tables.

Configurar permissões de pipeline

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

  1. Na barra lateral, clique em Tabelas Dinâmicas Delta.
  2. Selcione o nome de um pipeline.
  3. Clique no menu kebab Menu kebab 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.
  5. Selecione uma permissão no menu suspenso de permissão.
  6. Clique em Adicionar.
  7. Clique em Save (Salvar).

Habilitar o repositório de estado do RocksDB para Delta Live Tables

Você pode habilitar o gerenciamento de estado baseado no RockDB definindo a configuração a seguir antes de implantar um pipeline:

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

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