Carregar tabelas de uso de transmissão de dados em Databricks SQL

Prévia

Esse recurso está em Prévia Pública.

Databricks recomenda o uso de tabelas de transmissão para ingerir o uso de dados Databricks SQL. Uma tabela de transmissão é uma tabela Unity Catalog gerenciar com suporte extra para transmissão ou processamento de dados incrementais. Um Delta Live Tables pipeline é criado automaticamente para cada tabela de transmissão. O senhor pode usar tabelas de transmissão para carregamento incremental de dados do armazenamento de objetos Kafka e cloud.

Este artigo demonstra o uso de tabelas de transmissão para carregar dados do armazenamento de objetos cloud configurado como um volume Unity Catalog (recomendado) ou um local externo.

Observação

Para saber como usar as tabelas Delta Lake como fontes e sumidouros de transmissão, consulte Delta table transmission reads and writes.

Antes de começar

Antes de começar, verifique se o senhor tem o seguinte:

  • Um Databricks account com serverless ativado. Para obter mais informações, consulte Habilitar serverless SQL warehouse.

  • Um workspace com Unity Catalog ativado. Para obter mais informações, consulte Configurar e gerenciar Unity Catalog.

  • Um SQL warehouse que usa o canal Current.

  • Para consultar tabelas de transmissão criadas por um Delta Live Tables pipeline, o senhor deve usar um compute compartilhado usando Databricks Runtime 13.3 LTS e acima ou um SQL warehouse. As tabelas de transmissão criadas em um Unity Catalog habilitado pipeline não podem ser consultadas a partir de um clusters atribuído ou sem isolamento.

  • O privilégio READ FILES em um local externo do Unity Catalog. Para obter informações, consulte Criar um local externo para conectar o armazenamento cloud a Databricks.

  • O privilégio USE CATALOG no catálogo em que o senhor cria a tabela de transmissão.

  • O privilégio USE SCHEMA no esquema em que o senhor cria a tabela de transmissão.

  • O privilégio CREATE TABLE no esquema em que o senhor cria a tabela de transmissão.

  • O caminho para seus dados de origem.

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

    Exemplo de caminho de localização externa: s3://myBucket/analysis

    Observação

    Este artigo pressupõe que os dados que o senhor deseja carregar estão em um local de armazenamento cloud que corresponde a um volume Unity Catalog ou local externo ao qual o senhor tem acesso.

Descobrir e visualizar dados de origem

  1. Na barra lateral do site workspace, clique em Queries (Consultas) e, em seguida, clique em Create query (Criar consulta).

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

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

    Observação

    O senhor poderá encontrar erros de inferência de esquema ao executar a função read_files table valued se o padrão da função não puder analisar seus dados. Por exemplo, talvez o senhor precise configurar o modo multilinha para arquivos CSV ou JSON com várias linhas. Para obter uma lista de opções do analisador, consulte a função read_files table-valued.

    /* 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 "s3://<bucket>/<path>/<folder>"
    
    /* Preview your data */
    SELECT * FROM read_files("s3://<bucket>/<path>/<folder>") LIMIT 10
    

Carregar dados em uma tabela de transmissão

Para criar uma tabela de transmissão a partir de dados no armazenamento de objetos cloud, 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('s3://<bucket>/<path>/<folder>')

refresh uma tabela de transmissão usando um DLT pipeline

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

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

Depois que o senhor executa o comando REFRESH, o link DLT pipeline é retornado. O senhor pode usar o link DLT pipeline para verificar o status do refresh.

Observação

Somente o proprietário da tabela pode refresh uma tabela de transmissão 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

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

Para evitar a ingestão de dados que já existam no diretório de origem no momento da criação da tabela, defina a opção includeExistingFiles como false. Isso significa que somente 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('s3://mybucket/analysis/*/*/*.json', includeExistingFiles => false)

Totalmente refresh a mesa de transmissão

A atualização completa processa novamente todos os dados disponíveis na fonte com a definição mais recente. Não é recomendável chamar a atualização completa em fontes que não mantêm todo o histórico dos dados ou que têm períodos de retenção curtos, como Kafka, porque a atualização completa refresh trunca os dados existentes. Talvez o senhor não consiga recuperar dados antigos se eles não estiverem mais disponíveis na fonte.

Por exemplo:

REFRESH STREAMING TABLE my_bronze_table FULL

programar a transmissão table for automatic refresh

Para configurar uma tabela de transmissão para refresh automaticamente com base em uma programação 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>' ]];

Para obter exemplos de consultas do programa refresh, consulte ALTER STREAMING TABLE.

Acompanhar o status de uma atualização

O senhor pode view o status de uma tabela de transmissão refresh visualizando o pipeline que gerencia a tabela de transmissão na interface do usuário Delta Live Tables ou visualizando as informaçõesrefresh retornadas pelo comando DESCRIBE EXTENDED para a tabela de transmissão.

DESCRIBE EXTENDED <table-name>

transmissão ingestão de Kafka

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

Conceder aos usuários acesso a uma tabela de transmissão

Para conceder aos usuários o privilégio SELECT na tabela de transmissão 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 a concessão de privilégios em Unity Catalog objetos protegidos, consulte Unity Catalog privileges and securable objects.