Tipo de arquivo e dados não estruturados

Importante

Esse recurso está em Beta. Os administradores do workspace podem controlar o acesso a esse recurso na página Visualizações . Consulte Gerenciar visualizações do Azure Databricks.

O FILE tipo armazena uma referência governada a um arquivo não estruturado, com metadados como caminho e tamanho. Use FILE colunas no Unity Catalog para armazenar documentos, imagens e áudio junto com dados estruturados.

Com FILE MANAGED as colunas, o Unity Catalog armazena cópias dos arquivos e os gerencia com a tabela: excluir linhas torna os arquivos referenciados elegíveis para coleta de lixo, para que a tabela e seus arquivos permaneçam sincronizados.

Para a referência tipográfica, veja FILE tipo.

O diagrama a seguir mostra uma FILE coluna chamada video que faz referência a clipes de direção ao lado de colunas estruturadas, como rota, descrição da cena e etiqueta de perigo:

Uma tabela de clipes de condução onde a coluna de vídeo é do tipo FILE. Cada linha emparelha colunas estruturadas (ID do clipe, rota, descrição da cena, etiqueta de perigo e um embedding) com uma referência de arquivo de vídeo que mostra uma miniatura e um tamanho como 1,8 GB.

Metadados e armazenamento de FILE

Para cada linha, o FILE tipo armazena metadados e um link governado para o arquivo armazenado. Um FILE valor inclui uri, size, content_type, e checksum campos de metadados. Consultas de metadados não exigem leituras completas de arquivos, melhorando o desempenho das consultas.

Você pode passar FILE valores para funções de IA, como ai_parse_document função, e para funções definidas pelo usuário (UDFs).

O diagrama a seguir mostra uma coluna gerenciada FILE de exemplo, contendo metadados de caminho e tamanho e referências aos arquivos em armazenamento:

A tabela de clipes com a coluna de vídeo armazenada como um tipo FILE, mostrada como um par de caminho e tamanho. Setas vinculam cada linha ao seu arquivo armazenado, ilustrando uma referência governada entre a tabela e os arquivos.

Por que usar FILE em vez de BINARY ou STRING

A tabela a seguir detalha os desafios ao lidar com arquivos grandes e não estruturados com BINARY ou STRING tipos:

Tipo de coluna Description Diagrama
BINARY Materializa o objeto completo a cada leitura, mesmo quando você só precisa de metadados como tamanho ou caminho do arquivo. Isso resulta em cálculos desnecessários e consultas lentas. A tabela de clipes com a coluna de vídeo armazenada como BANÁRIO. Os bytes brutos de cada vídeo de vários gigabytes são materializados em linha na coluna.
STRING Armazena um caminho de arquivo sem metadados, como informações de tamanho ou versão, e sem ligação governada entre a tabela e o arquivo. Se outra carga de trabalho remove o arquivo, a tabela tem informações obsoletas. Se você remover uma linha de tabela, o arquivo referenciado permanece armazenado até que você o remova manualmente. A tabela de clipes com a coluna de vídeo armazenada como um caminho STRING, como s3://.../NW-0142. Um caminho não resolve mais para um arquivo no volume, mostrando que caminhos de string não garantem a existência de arquivos e que a governança não está vinculada.

Somas de verificação

O checksum campo é um token de integridade para os bytes do arquivo, da forma <prefix>:<digest>. Use para comparar arquivos ou verificar se um arquivo não mudou. Leitores ignoram uma soma de verificação com prefixo não reconhecido.

Nem sempre há uma soma de verificação disponível. to_file função, create_file função e copy_file função preenchem a soma de verificação quando o armazenamento de objetos retorna um ETAG. list_files Função de tabela e read_files função de tabela não preenchem a soma de verificação.

O checksum campo usa um dos seguintes prefixos:

prefixo Codificação digest Description
ETAG Opaque A eTag do object store para todo o arquivo. Fornecido literalmente pela loja, usado apenas para comparação de igualdade, e não recomputável.
MD5 Hexágono minúsculo Um resumo MD5 (RFC 1321), 32 caracteres hexagonais.
CRC32 Hexágono minúsculo Um checksum CRC32 (RFC 2083), 8 caracteres hexadecimais.
CRC32C Hexágono minúsculo Um checksum CRC32C (RFC 3385), 8 caracteres hexadecimais.
SHA-256 Hexágono minúsculo Um digest SHA-256 (RFC 6234), 64 caracteres hexadecimais.

Por exemplo, um checksum MD5 se parece com MD5:d41d8cd98f00b204e9800998ecf8427e, e um eTag de armazenamento de objetos parece ETAG:"686897696a7c876b7e", incluindo as aspas duplas ao redor retornadas pelo armazenamento de objetos.

Selecione entre FILE e BINARY

A tabela a seguir compara as opções para trabalhar com arquivos não estruturados:

Tipo de coluna Values Caso de uso
FILE Uma referência governada a um arquivo, mais metadados (uri, size, content_type, checksum). Use para gerenciar e processar arquivos não estruturados junto com dados estruturados, além de passar arquivos para funções integradas e de IA.
BINARY Os bytes brutos de um arquivo, em linha em uma coluna. Use para objetos pequenos (até 64 KB por padrão) armazenados diretamente no arquivo de dados. Isso é útil quando você precisa de baixa sobrecarga de metadados e gerenciamento de arquivos simplificado. Por exemplo, use isso para armazenar miniaturas alinhadas com os dados da linha.

FILE MANAGED e FILE EXTERNAL

O FILE tipo suporta duas abordagens para gerenciar os arquivos:

  • FILE MANAGED Colunas copiam arquivos para armazenamento gerenciado. As permissões são simplificadas e gerenciadas pela tabela. Quando você exclui linhas, ou as atualiza para referenciar arquivos diferentes, os arquivos não referenciados tornam-se elegíveis para coleta de lixo, assim a tabela e seus arquivos permanecem sincronizados. Use essa abordagem para cargas de trabalho que acessam arquivos por meio de uma tabela, como treinamento de ML ou geração aumentada por recuperação (RAG), e para arquivos ingeridos de fontes externas. Para padrões de ingestão, veja arquivos Ingest como o tipo FILE.
  • FILE EXTERNAL colunas referenciam arquivos existentes em um volume do Catálogo Unity. Os arquivos são protegidos pelas permissões de volume do Unity Catalog, mas seu ciclo de vida não é gerenciado pelo Unity Catalog, e eles não são copiados. Use essa abordagem quando precisar referenciar arquivos sem mover dados ou interromper ferramentas que leem de um volume existente.

O Azure Databricks recomenda FILE MANAGED para cargas de trabalho que se beneficiam de permissões em nível de arquivo e conformidade embutida: o acesso a cada arquivo é regido pela tabela que o referencia, e a exclusão de linhas torna os arquivos referenciados elegíveis para coleta de lixo. Use FILE EXTERNAL quando os arquivos precisam permanecer em seus caminhos de volume existentes para ferramentas que os leem fora da tabela.

Para consultas, não há diferença entre arquivos gerenciados e externos.

O diagrama a seguir mostra como o FILE tipo conecta seu código a arquivos em armazenamento de objetos na nuvem:

Diagrama da arquitetura do tipo FILE. Clientes de Python, SQL, Scala e UDF trabalham com um único tipo de FILE que lê metadados sem buscar bytes de arquivo. O FILE MANAGED armazena arquivos em um FileSpace onde o acesso é governado no nível da tabela e excluir linhas torna os arquivos elegíveis para coleta de lixo. FILE EXTERNAL referencia arquivos em seus caminhos existentes em um volume UC, regido por permissões de volume. Ambos os modos armazenam arquivos em armazenamento de objetos em nuvem, como S3, ADLS ou Google Cloud Storage.

FILE MANAGED

FILE MANAGED colunas armazenam cópias de arquivos em um FileSpace, um volume do Unity Catalog que você declara para a tabela usar como armazenamento gerenciado. O ciclo de vida deles está atrelado às tabelas que os referenciam: excluir linhas torna os arquivos referenciados elegíveis para coleta de lixo, para que a tabela e seus arquivos permaneçam sincronizados.

Os seguintes comportamentos se aplicam a FILE MANAGED:

  • Declarar o FileSpace requer a databricks.filespace-preview propriedade da tabela.
  • Ler ou escrever um arquivo gerenciado requer acesso tanto à tabela quanto ao volume que suporta o FileSpacearquivo .
  • Coleta automática de lixo de arquivos sem referência não é suportada no Beta.

Arquivos não estruturados armazenados em fontes externas como SharePoint, Google Drive, OneDrive e SFTP devem ser ingeridos como arquivos gerenciados antes que você possa usá-los com funções como ai_parse_document funções e funções definidas pelo usuário (UDFs). Para padrões de ingestão, veja arquivos Ingest como o tipo FILE.

Para usar arquivos gerenciados, crie uma tabela com uma FILE MANAGED coluna e declare um volume como , FileSpace definindo a databricks.filespace-preview propriedade da tabela como um caminho de volume:

'databricks.filespace-preview' = '/Volumes/<catalog>/<schema>/<volume_name>/<optional_path>'

Para exemplos completos, veja os exemplos a seguir FILE MANAGED .

FILE MANAGED Exemplos

Para criar uma tabela com uma FILE MANAGED coluna:

CREATE TABLE reports (id BIGINT, file FILE MANAGED)
  TBLPROPERTIES ('databricks.filespace-preview' = '/Volumes/my_catalog/my_schema/my_managed_volume/');

Para adicionar uma FILE MANAGED coluna a uma tabela existente, defina a databricks.filespace-preview propriedade tabela antes de adicionar a coluna, conforme no código a seguir:

ALTER TABLE reports SET TBLPROPERTIES ('databricks.filespace-preview' = '/Volumes/my_catalog/my_schema/my_managed_volume/');

ALTER TABLE reports ADD COLUMN attachment FILE MANAGED;

Adicionar uma FILE MANAGED coluna a uma tabela que não FileSpace tem falhas.

Exclua arquivos gerenciados sem referência

Como a coleta automática de lixo não é suportada, delete os arquivos sem referência você mesmo. O seguinte caderno encontra os arquivos em um FileSpace que nenhuma versão da tabela referencia, e opcionalmente os deleta:

Caderno de coleta de lixo FileType

Obter laptop

FILE EXTERNAL

FILE EXTERNAL colunas são referências a arquivos que já existem em um volume do Unity Catalog.

Se você tiver os privilégios necessários no volume, pode atualizar ou excluir esses arquivos. O Databricks recomenda que você use arquivos imutáveis. Uma concessão de tabela expõe os metadados do arquivo, mas ler os bytes do arquivo também requer o READ VOLUME privilégio sobre o volume subjacente.

Um arquivo externo mapeia cada linha de tabela para um arquivo em seu caminho existente em um volume do Unity Catalog:

Um diagrama de um volume UC contendo arquivos de teste organizados sob pastas de fase, mapeado para uma coluna EXTERNAL FILE. Cada linha da tabela referencia um arquivo pelo caminho do volume e adiciona colunas estruturadas como Coorte e Fase de Estudo.

FILE EXTERNAL Exemplos

Para criar uma tabela com uma FILE EXTERNAL coluna:

CREATE TABLE documents (id BIGINT, file FILE EXTERNAL);

Para adicionar uma FILE EXTERNAL coluna a uma tabela existente:

ALTER TABLE documents ADD COLUMN file FILE EXTERNAL;

Para criar e preencher uma tabela a partir de um volume, atribuindo IDs únicos a cada arquivo:

CREATE TABLE documents AS
  SELECT monotonically_increasing_id() AS id, file
  FROM list_files('/Volumes/samples/sec/contracts/');

Governança e comparação do ciclo de vida

A tabela a seguir compara como FILE MANAGED e FILE EXTERNAL governam o acesso a arquivos e lidam com o ciclo de vida do arquivo:

Tipo de Coluna FILE MANAGED FILE EXTERNAL
Controle de acesso a arquivos Regido por permissões de tabela e volume, como SELECT na tabela e READ VOLUME no volume. Regido por permissões de volume, como READ VOLUME.
Ciclo de vida e coleta de lixo Os arquivos estão vinculados às linhas que os referenciam. Deletar essas linhas torna os arquivos elegíveis para coleta de lixo. Coleta automática de lixo não é suportada. Você gerencia os arquivos sozinho. Deletar uma linha de tabela não afeta o arquivo subjacente no volume.

Casos de uso do tipo FILE

Tanto os tipos gerenciados quanto externos FILE enfrentam os seguintes desafios para casos de uso usando dados não estruturados:

Desafio Tipo suportado FILE Benefits
Arquivos grandes demais para serem armazenados em linha como BINARY FILE MANAGED ou FILE EXTERNAL Uma FILE coluna armazena uma referência, então um arquivo é lido somente quando uma função de IA ou UDF o processa. Isso evita que objetos grandes se materializem em linha na mesa.
Ciclo de vida e governança desconectados entre o sistema de arquivos e a tabela FILE MANAGED O Azure Databricks vincula o ciclo de vida de cada arquivo à tabela, então excluir linhas torna os arquivos elegíveis para limpeza em vez de deixar arquivos órfãos no armazenamento.
Cargas de trabalho simultâneas que exigem que os arquivos permaneçam no mesmo local FILE EXTERNAL Os arquivos permanecem em seus caminhos de volume existentes, sem ser afetados pelo ciclo de vida da tabela, então outras ferramentas que leem os mesmos arquivos não são interrompidas.

Próximas Etapas