Carregar tabelas de uso de transmissão de dados em Databricks SQL
Databricks recomenda o uso de tabelas de transmissão para ingerir o uso de dados Databricks SQL. Uma tabela de transmissão é uma tabela registrada em Unity Catalog 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.
Importante
As tabelas de transmissão criadas em Databricks SQL são apoiadas por um serverless Delta Live Tables pipeline. Seu site workspace deve ser compatível com o pipeline serverless para usar essa funcionalidade.
Antes de começar
Antes de começar, o senhor deve atender aos seguintes requisitos.
requisitos de espaço de trabalho:
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.
requisitos de computação:
O senhor deve usar uma das seguintes opções:
Um SQL warehouse que usa o canal
Current
.computar com o modo de acesso compartilhado em Databricks Runtime 13.3 LTS ou acima.
computar com modo de acesso de usuário único em Databricks Runtime 15.4 LTS ou acima.
No site Databricks Runtime 15.3 e abaixo, não é possível usar o usuário único compute para consultar tabelas de transmissão que sejam de propriedade de outros usuários. É possível usar o usuário único compute em Databricks Runtime 15.3 e abaixo somente se o senhor possuir a tabela de transmissão. O criador da tabela é o proprietário.
Databricks Runtime 15.4 LTS e acima suportam consultas em tabelas geradas pelo Delta Live Tables em um único usuário compute, independentemente da propriedade da tabela. Para aproveitar a filtragem de dados fornecida em Databricks Runtime 15.4 LTS e acima, o senhor deve confirmar se o seu workspace está habilitado para serverless compute , pois a funcionalidade de filtragem de dados que suporta Delta tabelas geradas pelo Live Tables é executada em serverless compute. O senhor poderá ser cobrado pelo serverless compute recurso quando usar o usuário único compute para executar operações de filtragem de dados. Consulte Controle de acesso refinado em computação de usuário único.
Requisitos de permissões:
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.
Outros requisitos:
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
Na barra lateral do site workspace, clique em Queries (Consultas) e, em seguida, clique em Create query (Criar consulta).
No editor de consultas, selecione um SQL warehouse que use o canal
Current
na lista suspensa.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>')
Definir o canal de tempo de execução
As tabelas de transmissão criadas usando o warehouse SQL são atualizadas automaticamente usando um Delta Live Tables pipeline. Delta Live Tables O pipeline usa o tempo de execução no canal current
por default. Consulte Delta Live Tables notas sobre a versão e o processo de upgrade de versão para saber mais sobre o processo de versão.
A Databricks recomenda o uso do canal current
para cargas de trabalho de produção. Os novos recursos são liberados primeiro no canal preview
. O senhor pode definir um pipeline para a visualização do canal Delta Live Tables para testar o novo recurso especificando preview
como uma propriedade de tabela. Você pode especificar essa propriedade ao criar a tabela ou após a criação da tabela usando uma instrução ALTER.
O exemplo de código a seguir mostra como definir o canal para visualização em uma instrução CREATE:
CREATE OR REPLACE MATERIALIZED VIEW foo.default.bar
TBLPROPERTIES ('pipelines.channel' = 'preview') as
SELECT
*
FROM
range(5)
## <a id="refresh"></a> Refresh a <st> using a DLT pipeline
This section describes patterns for refreshing a <st> with the latest data available from the sources defined in the query.
When you `CREATE` or `REFRESH` a <st>, the update processes using a serverless <DLT> pipeline. Each <st> you define has an associated <DLT> pipeline.
After you run the `REFRESH` command, the DLT pipeline link is returned. You can use the DLT pipeline link to check the status of the refresh.
.. note:: Only the table owner can refresh a <st> to get the latest data. The user that creates the table is the owner, and the owner can't be changed. You might need to refresh your <st> before using [time travel](/delta/history.md#time-travel) queries.
See [_](/delta-live-tables/index.md).
### Ingest new data only
By default, the `read_files` function reads all existing data in the source directory during table creation, and then processes newly arriving records with each refresh.
To avoid ingesting data that already exists in the source directory at the time of table creation, set the `includeExistingFiles` option to `false`. This means that only data that arrives in the directory after table creation is processed. For example:
.. azure::
```sql
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)
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.
Monitorar a execução usando o histórico de consultas
O senhor pode usar a página de histórico de consultas para acessar detalhes e perfis de consultas que podem ajudá-lo a identificar consultas com baixo desempenho e gargalos no site Delta Live Tables pipeline usado para executar as atualizações da tabela de transmissão. Para obter uma visão geral do tipo de informação disponível no histórico de consultas e nos perfis de consultas, consulte Histórico de consultas e Perfil de consultas.
Prévia
Este recurso está em Visualização pública. Os administradores do espaço de trabalho podem ativar esse recurso na página Pré-visualizações. Consulte Manage Databricks Previews.
Todas as declarações relacionadas às tabelas de transmissão aparecem no histórico de consultas. O senhor pode usar o filtro suspenso Statement (Declaração ) para selecionar qualquer comando e inspecionar as consultas relacionadas. Todas as instruções CREATE
são seguidas por uma instrução REFRESH
que é executada de forma assíncrona em um pipeline do Delta Live Tables. As declarações do site REFRESH
normalmente incluem planos de consulta detalhados que fornecem percepções sobre a otimização do desempenho.
Para acessar REFRESH
statements na UI do histórico de consultas, use os seguintes passos:
Clique em na barra lateral esquerda para abrir a Query History UI.
Selecione a caixa de seleção REFRESH no filtro suspenso Statement (Declaração ).
Clique no nome da instrução de consulta para acessar view detalhes resumidos, como a duração da consulta e as métricas agregadas.
Clique em Ver perfil de consulta para abrir o perfil de consulta. Consulte Perfil de consulta para obter detalhes sobre como navegar pelo perfil de consulta.
Opcionalmente, é possível usar os links na seção Fonte da consulta para abrir a consulta ou o pipeline relacionado.
O senhor também pode acessar os detalhes da consulta usando links no editor SQL ou em um Notebook anexado a um SQL warehouse.
Observação
Sua tabela de transmissão deve ser configurada para execução usando o canal de visualização. Consulte Definir o canal de tempo de execução.