Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve a estratégia de descoberta de partição padrão para tabelas externas do Catálogo do Unity e uma configuração opcional para habilitar um log de metadados de partição que torna a descoberta de partição consistente com o metastore do Hive.
O Databricks recomenda habilitar o registro em log de metadados de partição para melhorar as velocidades de leitura e o desempenho da consulta para tabelas externas do Catálogo do Unity com partições.
Qual é a estratégia de descoberta de partição padrão para o Catálogo do Unity?
Por padrão, o Catálogo do Unity lista recursivamente todos os diretórios no local da tabela para descobrir automaticamente as partições. Para tabelas grandes com muitos diretórios de partição, isso pode aumentar a latência para muitas operações de tabela.
Usar o registro em log de metadados de partição
Importante
Esse recurso está em Visualização Pública.
No Databricks Runtime 13.3 LTS e posteriores, você pode habilitar opcionalmente o registro em log de metadados de partição, uma estratégia de descoberta de partição para tabelas externas registradas no Unity Catalog. Esse comportamento é consistente com a estratégia de descoberta de partição usada no metastore do Hive. Esse comportamento afeta apenas as tabelas externas do Catálogo do Unity que têm partições e usam Parquet, ORC, CSV, Avro ou JSON. O Databricks recomenda habilitar o novo comportamento para melhorar as velocidades de leitura e o desempenho da consulta para essas tabelas.
Importante
Tabelas com log de metadados de partição habilitados demonstram uma alteração comportamental para descoberta de partição. Em vez de verificar automaticamente o local da tabela em busca de partições, o Catálogo do Unity respeita apenas as partições registradas nos metadados de partição. Consulte Adicionar, soltar ou reparar metadados de partição manualmente.
Esse comportamento se tornará o padrão em uma versão futura do Databricks Runtime. Tabelas com esse recurso habilitado só podem ser lidas ou gravadas usando o Databricks Runtime 13.3 LTS e superior.
Habilitar o registro em log de metadados de partição
Para habilitar o log de metadados de partição em uma tabela, defina a propriedade da tabela ao criar uma tabela externa, conforme mostrado no exemplo a seguir:
CREATE OR REPLACE TABLE <catalog>.<schema>.<table-name>
USING <format>
PARTITIONED BY (<partition-column-list>)
TBLPROPERTIES ('partitionMetadataEnabled' = 'true')
LOCATION 'abfss://<bucket-path>/<table-directory>';
Depois de criar uma tabela com o log de metadados de partição habilitado, o Azure Databricks usa os metadados de partição para ler a tabela em todas as cargas de trabalho subsequentes.
Você também pode usar o Spark conf para habilitar metadados de partição para o SparkSession atual. Quando habilitadas, as tabelas externas criadas no SparkSession serão criadas com a propriedade da tabela de metadados de partição habilitada. A conf do Spark está desabilitada por padrão.
A sintaxe a seguir demonstra o uso do SQL para definir uma configuração do Spark em um notebook. Você também pode definir configurações do Spark ao configurar a computação.
SET spark.databricks.nonDelta.partitionLog.enabled = true;
Você pode sobrescrever a configuração do Spark habilitando ou desabilitando explicitamente a propriedade da tabela ao criar uma tabela.
Importante
Você só pode ler e gravar tabelas com o log de metadados de partição habilitado no Databricks Runtime 13.3 LTS e superior. Para ler essas tabelas usando o Databricks Runtime 12.2 LTS, você deve remover e recriar a tabela com a propriedade da tabela de metadados de partição desabilitada.
As tabelas externas não excluem arquivos de dados subjacentes quando você os descarta. O Databricks recomenda usar CREATE OR REPLACE sintaxe para atualizar tabelas para usar o registro em log de metadados de partição, como no exemplo a seguir:
CREATE OR REPLACE TABLE <catalog>.<schema>.<table-name>
USING <format>
PARTITIONED BY (<partition-column-list>)
LOCATION 'abfss://<bucket-path>/<table-directory>';
Você pode verificar se uma tabela foi criada usando metadados de partição:
- Verifique a seção de propriedades da tabela retornada por
DESCRIBE EXTENDED table_name. - Verifique os metadados da tabela com o Gerenciador de Catálogos.
As propriedades da tabela contêm partitionMetadataEnabled=true.
O Catálogo do Unity impõe regras sobreposições de caminho para tabelas e volumes. Não é possível registrar uma nova tabela do Catálogo do Unity em uma coleção de arquivos de dados se uma tabela já existir nesse local.
Trabalhar com tabelas com metadados de partição
O Databricks recomenda usar nomes de tabela em todas as leituras e gravações em todas as tabelas registradas no Catálogo do Unity. Para tabelas com metadados de partição, isso garante que novas partições adicionadas a um registro de tabela ao Catálogo do Unity e que as consultas na tabela leiam todas as partições registradas.
O uso de padrões baseados em caminho para leituras ou gravações pode resultar em partições sendo ignoradas ou não registradas no metastore do Catálogo do Unity. Confira Limitações.
Listar partições
Use o seguinte comando para mostrar todas as partições registradas no Catálogo do Unity como metadados de partição:
SHOW PARTITIONS <table-name>
Para verificar se uma única partição está registrada no Catálogo do Unity, use o seguinte comando:
SHOW PARTITIONS <table-name>
PARTITION (<partition-column-name> = <partition-column-value>)
Adicionar, soltar ou reparar metadados de partição manualmente
O Catálogo do Unity exige que todas as partições para tabelas externas estejam contidas no diretório registrado usando a cláusula LOCATION durante o registro da tabela.
Com os metadados de partição habilitados, a descoberta automática de partições no local da tabela está desabilitada. Se sistemas externos gravarem dados no local da tabela ou você usar gravações baseadas em caminho para adicionar ou substituir registros em sua tabela, você deverá reparar manualmente os metadados de partição.
O Azure Databricks usa o particionamento no estilo Hive para armazenar tabelas apoiadas por Parquet, ORC, CSV e JSON. As partições no estilo Hive contêm pares chave-valor conectados por um sinal de igual no diretório de partição, por exemplo, year=2021/month=01/.
Se a tabela usar o particionamento no estilo Hive, você poderá usar MSCK REPAIR para sincronizar metadados de partição no Catálogo do Unity com partições que existem no local da tabela. Os exemplos de sintaxe a seguir demonstram operações comuns:
-- Add and remove parition metadata to match directories in table ___location
MSCK REPAIR TABLE <table_name> SYNC PARTITIONS;
-- Add partitions in the table ___location that are not registered as partition metadata
MSCK REPAIR TABLE <table_name> ADD PARTITIONS;
-- Drop partitions registered as partition metadata that are not in the table ___location
MSCK REPAIR TABLE <table_name> DROP PARTITIONS;
Consulte REPAIR TABLE.
Especificar manualmente caminhos para outros tipos de partição
Se a tabela não usar o particionamento no estilo Hive, você deverá especificar manualmente os locais de partição ao adicionar partições. Especificar manualmente partições também pode reduzir a latência em comparação com MSCK REPAIR sintaxe, especialmente para tabelas com um grande número de partições. O exemplo de sintaxe a seguir mostra a adição de uma partição:
ALTER TABLE <table-name>
ADD PARTITION (<partition-column-name> = <partition-column-value>)
LOCATION 'abfss://<bucket-path>/<table-directory>/<partition-directory>';
Você também pode usar ALTER TABLE sintaxe para remover, renomear, recuperar e definir locais para partições. Veja ALTER TABLE... PARTITION.
Limitações
As seguintes limitações existem:
- Não é possível ler ou gravar em tabelas com metadados de partição habilitados usando o Databricks Runtime 12.2 LTS ou inferior.
- Ler uma tabela usando o caminho do diretório retorna todas as partições, incluindo qualquer uma que tenha sido adicionada ou descartada manualmente.
- Se você inserir ou substituir registros em uma tabela usando um caminho em vez de um nome de tabela, os metadados de partição não serão registrados.
- Não há suporte para o formato de arquivo Avro.