Configurar a ingestão incremental desde o Azure Data Lake Storage

Este artigo descreve como configurar a ingestão incremental de dados do Azure Data Lake Storage para o Azure Databricks. Você aprenderá como acessar com segurança os dados de origem em um local de armazenamento de objetos na nuvem que corresponde a um volume do Catálogo Unity (recomendado) ou a um local externo do Catálogo Unity. Depois, vais aprender a ingerir os dados de forma incremental numa tabela gerida do Unity Catalog usando o Auto Loader com pipelines Lakeflow.

Nota

Para configurar a ingestão incremental no Databricks SQL em vez de num caderno, veja Usar tabelas de streaming independentes.

Antes de começar

Se você não for um administrador, este artigo pressupõe que um administrador tenha fornecido o seguinte:

  • Acesso a um espaço de trabalho do Azure Databricks com o Unity Catalog habilitado. Para obter mais informações, consulte Introdução ao catálogo Unity.

  • A permissão READ VOLUME no volume externo do Catálogo Unity ou a permissão READ FILES no local externo do Catálogo Unity que corresponde ao local de armazenamento em nuvem que contém os dados de origem. Para obter mais informações, consulte Conceder permissões em um local externo

  • O percurso para os dados de origem.

    Exemplo de caminho de volume: /Volumes/<catalog>/<schema>/<volume>/<path>/<folder>

    Caminho de localização externa, exemplo: abfss://<container>@<storage-account>.dfs.core.windows.net/<folder>

  • Os privilégios USE SCHEMA e CREATE TABLE no esquema em que pretendes carregar dados.

  • Permissão de criação de cluster ou acesso a uma política de cluster que define um cluster de pipeline (cluster_type campo definido como dlt).

    Se o caminho para os dados de origem for um caminho de volume, o cluster deverá executar o Databricks Runtime 13.3 LTS ou superior.

Importante

Se você tiver dúvidas sobre esses pré-requisitos, entre em contato com o administrador da sua conta.

Etapa 1: Criar um cluster

Para criar um cluster, faça o seguinte:

  1. Entre no seu espaço de trabalho do Azure Databricks.
  2. Na barra lateral, clique em Novo>Cluster.
  3. Na interface do usuário dos clusters, especifique um nome exclusivo para o cluster.
  4. Se o caminho para os dados de origem for um caminho de volume, para a versão de tempo de execução do Databricks Runtime, selecione 13.2 ou superior.
  5. Clique em Criar cluster.

Etapa 2: Criar um bloco de anotações de exploração de dados

Esta seção descreve como criar um bloco de anotações de exploração de dados para que você possa entender seus dados antes de criar seu pipeline de dados.

  1. Na barra lateral, clique em +Novo>Notebook.

    O bloco de anotações é anexado automaticamente ao último cluster usado (neste caso, o cluster criado na Etapa 1: Criar um cluster).

  2. Introduza um nome para o bloco de notas.

  3. Clique no botão 'Idioma' e, em seguida, selecione Python ou SQL no menu suspenso. Python é selecionada por padrão.

  4. Para confirmar o acesso aos dados de origem no ADLS, cole o seguinte código numa célula do bloco de notas, clique em Menu Executar e depois clique em Executar Célula.

    SQL

    LIST '<path-to-source-data>'
    

    Python

    %fs ls '<path-to-source-data>'
    

    Substitua <path-to-source-data> pelo caminho para o diretório que contém seus dados.

    Isso exibe o conteúdo do diretório que contém o conjunto de dados.

  5. Para exibir uma amostra dos registos para entender melhor o conteúdo e o formato de cada registo, cole o seguinte em uma célula do bloco de notas, clique no Menu Executar e depois clique em Executar Célula.

    SQL

    SELECT * from read_files('<path-to-source-data>', format => '<file-format>') LIMIT 10
    

    Python

    spark.read.format('<file-format>').load('<path-to-source-data>').limit(10).display()
    

    Substitua os seguintes valores:

    • <file-format>: Um formato de ficheiro suportado. Consulte as opções DataFrameReader.
    • <path to source data>: O caminho para um arquivo no diretório que contém seus dados.

    Isso exibe os dez primeiros registros do arquivo especificado.

Etapa 3: Ingerir dados brutos

Para ingerir dados brutos, faça o seguinte:

  1. Na barra lateral, clique em Novo>Bloco de Notas.

    O bloco de anotações é anexado automaticamente ao último cluster usado (neste caso, o cluster criado anteriormente neste artigo).

  2. Introduza um nome para o bloco de notas.

  3. Clique no botão 'Idioma' e, em seguida, selecione Python ou SQL no menu suspenso. Python é selecionada por padrão.

  4. Cole o seguinte código em uma célula do bloco de anotações:

    SQL

    CREATE OR REFRESH STREAMING TABLE
      <table-name>
    AS SELECT
      *
    FROM
      STREAM read_files(
        '<path-to-source-data>',
        format => '<file-format>'
      )
    

    Python

    @dp.table(table_properties={'quality': 'bronze'})
    def <table-name>():
      return (
         spark.readStream.format('cloudFiles')
         .option('cloudFiles.format', '<file-format>')
         .load(f'{<path-to-source-data>}')
     )
    

    Substitua os seguintes valores:

    • <table-name>: Um nome para a tabela que conterá os registros ingeridos.
    • <path-to-source-data>: O caminho para a sua fonte de dados.
    • <file-format>: Um formato de ficheiro suportado. Consulte as opções DataFrameReader.

Nota

Os pipelines do Lakeflow não foram concebidos para ser executados de forma interativa em células de notebooks. Executar uma célula que contém a sintaxe dos pipelines Lakeflow num caderno retorna uma mensagem sobre se a consulta é sintaticamente válida, mas não executa lógica de consulta. A etapa a seguir descreve como criar uma pipeline a partir do notebook de ingestão que acabou de criar.

Etapa 4: Criar e publicar um pipeline

Para criar um pipeline e publicá-lo no Unity Catalog, faça o seguinte:

  1. No espaço de trabalho, clique no ícone Fluxos de trabalho.Jobs & Pipelines na barra lateral.
  2. Em Novo, clique em Pipeline ETL.
  3. Insira um nome para o seu pipeline.
  4. Para modo Pipeline, selecione Acionado.
  5. Em Código-fonte, selecione o bloco de anotações que contém o código-fonte do pipeline.
  6. Em Destino, selecione Catálogo Unity.
  7. Para garantir que a sua tabela seja gerida pelo Unity Catalog e que qualquer utilizador com acesso ao esquema pai possa efetuar consultas, selecione um Catálogo e um Esquema Alvo nas listas pendentes.
  8. Se não tiver permissão para criar clusters, selecione uma política de cluster que suporte pipelines do Lakeflow na lista pendente.
  9. Em Avançado, defina o Canal como Visualização.
  10. Aceite todos os outros valores padrão e clique em Criar.

Etapa 5: Agendar a linha de processamento

Para programar a execução, siga os passos abaixo:

  1. No espaço de trabalho, clique no ícone Fluxos de trabalho.Jobs & Pipelines na barra lateral.
  2. Clique no nome do pipeline que você deseja agendar.
  3. Clique em Agendar>Adicionar uma agenda.
  4. Em Nome do trabalho, insira um nome para o trabalho.
  5. Defina o cronograma como Agendado.
  6. Especifique o período, a hora de início e o fuso horário.
  7. Configure um ou mais endereços de e-mail para receber alertas sobre início, sucesso ou falha do pipeline.
  8. Clique em Criar.

Próximos passos