Melhores práticas para DBFS e Unity Catalog

O Unity Catalog apresenta uma série de novas configurações e conceitos que abordam a governança de dados de forma totalmente diferente do DBFS. Este artigo descreve várias práticas recomendadas para trabalhar com locais externos do Unity Catalog e DBFS.

Databricks não recomenda o uso de DBFS e armazenamento de objeto cloud montado para a maioria dos casos de uso no workspace Databricks habilitado para Unity Catalog. Este artigo descreve alguns cenários nos quais você deve usar o armazenamento de objeto em cloud montado. Observe que o Databricks não recomenda o uso da DBFS root em conjunto com o Unity Catalog, a menos que você deva migrar arquivos ou dados armazenados lá para o Unity Catalog.

Como o DBFS é usado em espaços de trabalho habilitados para Unity Catalog?

A DBFS root é o localdefault para armazenar arquivos associados a várias ações executadas no workspace do Databricks, incluindo a criação de tabelas gerenciadas no escopo do workspace hive_metastore. As ações executadas em tabelas no hive_metastore usam padrões de acesso a dados herdados, que podem incluir dados e credenciais de armazenamento gerenciados por DBFS.

Como o DBFS funciona no modo de acesso de usuário único?

Os clusters configurados com o modo de acesso de usuário único têm acesso total ao DBFS, incluindo todos os arquivos na DBFS root e dados montados. DBFS root estão disponíveis neste modo de acesso, tornando-o a escolha para cargas de trabalho de ML que precisam de acesso ao dataset do Unity Catalog.

Databricks recomenda usar entidade de serviço com modo de acesso Job agendado e usuário único para cargas de trabalho de produção que precisam acessar dados gerenciados por DBFS e Unity Catalog.

Como o DBFS funciona no modo de acesso compartilhado?

O modo de acesso compartilhado combina a governança de dados Unity Catalog com ACLs de tabela herdada do Databricks. O acesso aos dados no hive_metastore está disponível apenas para usuários com permissões explicitamente concedidas.

Para interagir com arquivos diretamente usando DBFS, você deve ter permissões ANY FILE concedidas. Como ANY FILE permite que os usuários ignorem as ACLs das tabelas herdadas no hive_metastore e acessem todos os dados gerenciados pelo DBFS, o Databricks recomenda cautela ao conceder esse privilégio.

Não use DBFS com locais externos do Unity Catalog

Unity Catalog protege o acesso aos dados em locais externos usando caminhos completos de URI cloud para identificar concessões em diretórios de armazenamento de objetos gerenciados. As montagens DBFS usam um modelo de acesso a dados totalmente diferente que ignora totalmente o Unity Catalog. Databricks recomenda que você não reutilize volumes de armazenamento de objetos cloud entre montagens DBFS e volumes externos UC.

Proteja seu armazenamento Unity Catalog-gerenciar

Cada metastore do Unity Catalog tem uma account de armazenamento de objeto configurada por um administrador account do Databricks. Unity Catalog usa este local para armazenar todos os dados e metadados para tabelas Unity Catalog-gerenciar.

Uma account de armazenamento usada para um metastore do Unity Catalog deve:

  • Seja criado novo para o Unity Catalog.

  • Tenha uma política de identidade personalizada definida para o Unity Catalog.

  • Só pode ser acessado com Unity Catalog.

  • Só pode ser acessado usando as políticas de acesso de identidade criadas para o Unity Catalog.

Adicionar dados existentes a locais externos

É possível carregar account de armazenamento existente no Unity Catalog usando locais externos. Para maior segurança, o Databricks recomenda apenas carregar account de armazenamento para locais externos se todas as outras credenciais de armazenamento e padrões de acesso tiverem sido revogados.

Você nunca deve carregar uma account de armazenamento usada como DBFS root como um local externo no Unity Catalog.

configurações clusters são ignoradas pelo acesso ao sistema de arquivos do Unity Catalog

O Unity Catalog não respeita as configurações clusters para as configurações do sistema de arquivos. Isso significa que as configurações do sistema de arquivos Hadoop para configurar o comportamento personalizado com armazenamento de objetos cloud não funcionam ao acessar o uso de dados do Unity Catalog.

Limitação em torno do acesso de vários caminhos

Embora geralmente você possa usar Unity Catalog e o DBFS juntos, os caminhos que são iguais ou compartilham um relacionamento pai/filho não podem ser referenciados no mesmo comando ou célula Notebook usando métodos de acesso diferentes.

Por exemplo, se uma tabela externa foo for definida em hive_metastore no local a/b/c e um local externo for definido no Unity Catalog em a/b/, o código a seguir gerará um erro:

spark.read.table("foo").filter("id IS NOT NULL").write.mode("overwrite").save("a/b/c")

Este erro não surgiria se esta lógica fosse dividida em duas células:

df = spark.read.table("foo").filter("id IS NOT NULL")
df.write.mode("overwrite").save("a/b/c")