Carregar dados usando tabelas de streaming no Databricks SQL

Importante

Esta funcionalidade está em Pré-visualização Pública. Para se inscrever para ter acesso, preencha este formulário.

O Databricks recomenda o uso de tabelas de streaming para ingerir dados usando o Databricks SQL. Uma tabela de streaming é uma tabela gerenciada pelo Unity Catalog com suporte extra para streaming ou processamento incremental de dados. Um pipeline DLT é criado automaticamente para cada tabela de streaming. Você pode usar tabelas de streaming para carregamento incremental de dados do Kafka e armazenamento de objetos na nuvem.

Este artigo demonstra o uso de tabelas de streaming para carregar dados do armazenamento de objetos na nuvem configurado como um volume do Catálogo Unity (recomendado) ou local externo.

Nota

Para saber como usar tabelas Delta Lake como fontes e coletores de streaming, consulte Leituras e gravações de streaming de tabela Delta.

Antes de começar

Antes de começar, certifique-se de que tem o seguinte:

  • Uma conta do Azure Databricks com serverless habilitado. Para obter mais informações, consulte Habilitar SQL warehouses sem servidor.

  • Um espaço de trabalho com o Unity Catalog ativado. Para obter mais informações, consulte Configurar e gerenciar o catálogo Unity.

  • Um armazém SQL que utiliza o Current canal.

  • Para consultar tabelas de streaming criadas por um pipeline Delta Live Tables, você deve usar uma computação compartilhada usando o Databricks Runtime 13.3 LTS e superior ou um SQL warehouse. As tabelas de streaming criadas em um pipeline habilitado para Unity Catalog não podem ser consultadas a partir de clusters de isolamento atribuídos ou não.

  • O READ FILES privilégio em um local externo do Catálogo Unity. Para obter informações, consulte Criar um local externo para conectar o armazenamento em nuvem ao Azure Databricks.

  • O USE CATALOG privilégio no catálogo no qual você cria a tabela de streaming.

  • O USE SCHEMA privilégio no esquema no qual você cria a tabela de streaming.

  • O CREATE TABLE privilégio no esquema no qual você cria a tabela de streaming.

  • O caminho para os dados de origem.

    Exemplo de caminho de volume: /Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

    Exemplo de caminho de local externo: abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis

    Nota

    Este artigo pressupõe que os dados que você deseja carregar estejam em um local de armazenamento em nuvem que corresponda a um volume do Catálogo Unity ou local externo ao qual você tenha acesso.

Descobrir e visualizar dados de origem

  1. Na barra lateral da área de trabalho, clique em Consultas e, em seguida, clique em Criar consulta.

  2. No editor de consultas, selecione um SQL warehouse que use o Current canal na lista suspensa.

  3. Cole o seguinte no editor, substituindo valores entre colchetes angulares (<>) pelas informações que identificam seus dados de origem e clique em Executar.

    Nota

    Você pode encontrar erros de inferência de esquema ao executar a função com valor de read_files tabela se os padrões da função não puderem analisar seus dados. Por exemplo, talvez seja necessário configurar o modo de várias linhas para arquivos CSV ou JSON de várias linhas. Para obter uma lista de opções do analisador, consulte read_files função com valor de tabela.

    /* Discover your data in a volume */
    LIST "/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>"
    
    /* Preview your data in a volume */
    SELECT * FROM read_files("/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>") LIMIT 10
    
    /* Discover your data in an external location */
    LIST "abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>"
    
    /* Preview your data */
    SELECT * FROM read_files("abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>") LIMIT 10
    

Carregar dados em uma tabela de streaming

Para criar uma tabela de streaming a partir de dados no armazenamento de objetos na nuvem, cole o seguinte no editor de consultas e clique em Executar:

/* Load data from a volume */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>')

/* Load data from an external location */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>')

Atualizar uma tabela de streaming usando um pipeline de DLT

Esta seção descreve padrões para atualizar uma tabela de streaming com os dados mais recentes disponíveis das fontes definidas na consulta.

CREATE operações para tabelas de streaming usam um armazém SQL Databricks para a criação inicial e carregamento de dados na tabela de streaming. REFRESH operações para streaming de tabelas usam Delta Live Tables (DLT). Um pipeline DLT é criado automaticamente para cada tabela de streaming. Quando uma tabela de streaming é atualizada, uma atualização para o pipeline DLT é iniciada para processar a atualização.

Depois de executar o REFRESH comando, o link de pipeline DLT é retornado. Você pode usar o link de pipeline DLT para verificar o status da atualização.

Nota

Somente o proprietário da tabela pode atualizar uma tabela de streaming para obter os dados mais recentes. O usuário que cria a tabela é o proprietário, e o proprietário não pode ser alterado.

Consulte O que é Delta Live Tables?.

Ingerir apenas novos dados

Por padrão, a função lê todos os dados existentes no diretório de origem durante a criação da tabela e, em seguida, processa read_files os registros recém-chegados a cada atualização.

Para evitar a ingestão de dados que já existem no diretório de origem no momento da criação da tabela, defina a includeExistingFiles opção como false. Isso significa que apenas os dados que chegam ao diretório após a criação da tabela são processados. Por exemplo:

CREATE OR REFRESH STREAMING TABLE my_bronze_table
AS SELECT *
FROM STREAM read_files(
  'abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis/*/*/*.json',
  includeExistingFiles => false)

Atualizar totalmente uma tabela de streaming

As atualizações completas reprocessam todos os dados disponíveis na fonte com a definição mais recente. Não é recomendável chamar atualizações completas em fontes que não mantêm todo o histórico dos dados ou têm períodos de retenção curtos, como Kafka, porque a atualização completa trunca os dados existentes. Talvez não seja possível recuperar dados antigos se os dados não estiverem mais disponíveis na fonte.

Por exemplo:

REFRESH STREAMING TABLE my_bronze_table FULL

Agendar uma tabela de streaming para atualização automática

Para configurar uma tabela de streaming para atualizar automaticamente com base em uma agenda definida, cole o seguinte no editor de consultas e clique em Executar:

ALTER STREAMING TABLE
[[<catalog>.]<database>.]<name>
ADD [SCHEDULE [REFRESH]
        CRON '<cron-string>'
                [ AT TIME ZONE '<timezone-id>' ]];

Por exemplo, consultar agendamento de atualização, consulte ALTER STREAMING TABLE.

Acompanhar o status de uma atualização

Você pode exibir o status de uma atualização de tabela de streaming exibindo o pipeline que gerencia a tabela de streaming na interface do usuário Delta Live Tables ou exibindo as Informações de Atualização retornadas DESCRIBE EXTENDED pelo comando para a tabela de streaming.

DESCRIBE EXTENDED <table-name>

Ingestão de streaming de Kafka

Para obter um exemplo de ingestão de streaming de Kafka, consulte read_kafka.

Conceder aos usuários acesso a uma tabela de streaming

Para conceder aos usuários o SELECT privilégio na tabela de streaming para que eles possam consultá-la, cole o seguinte no editor de consultas e clique em Executar:

GRANT SELECT ON TABLE <catalog>.<schema>.<table> TO <user-or-group>

Para obter mais informações sobre como conceder privilégios em objetos protegíveis do Unity Catalog, consulte Privilégios e objetos protegíveis do Unity Catalog.

Limitações

  • As tabelas de streaming Databricks SQL não são suportadas nas regiões Centro-Sul dos EUA e Oeste dos EUA 2.

Recursos adicionais