Otimize o desempenho nos dados VARIANT com fragmentação
Beta
Este recurso está em Beta. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Pré-visualizações . Consulte Gerenciar prévias do Databricks.
Esta página descreve como usar a fragmentação para otimizar o desempenho da consulta em tabelas com dados semiestruturados em colunas VARIANT.
Consulte tipo deVARIANT, Compatibilidade com tipo de Variant e Consultar dados variant.
O que é fragmentação?
A fragmentação melhora o desempenho da query dos dados VARIANT ao armazenar campos comuns como colunas separadas nos arquivos Parquet. Este processo reduz o I/O necessário para ler campos e melhora a compressão usando um formato em colunas em vez de um blob binário.
Requisitos
Databricks Runtime 17,2 ou superior é necessário para ler e gravar tabelas VARIANT fragmentadas.
Ativar exclusão
Habilite a fragmentação para todo o seu workspace pelo portal de pré-visualização. Não são necessárias alterações de código para ler ou gravar dados VARIANT com fragmentação.
Depois de ativar o recurso para seu workspace, a destruição é ativada automaticamente para os seguintes cenários:
CREATE TABLEcom uma ou maisVARIANTcolunas.CREATE AND REPLACE TABLEcom uma ou maisVARIANTcolunas.ALTER TABLEao adicionar uma ou maisVARIANTcolunas.
Para tabelas existentes, é possível habilitar manualmente a fragmentação, definindo a propriedade da tabela enableVariantShredding como TRUE, e desabilitá-la definindo a propriedade como FALSE, desde que a fragmentação esteja habilitada no nível do workspace:
- Delta Lake table
- Iceberg table
ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'true');
ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'true');
Verifique se a fragmentação está habilitada, verificando se a propriedade da tabela enableVariantShredding está definida como true.
Desativar a fragmentação em gravações futuras para uma tabela específica
Se você habilitar o shredding Beta para o seu workspace, mas quiser excluir uma tabela específica, defina a propriedade da tabela enableVariantShredding:
- Delta Lake table
- Iceberg table
ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'false');
ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'false');
Remova a desagregação de uma tabela existente
Para remover a fragmentação em uma tabela existente, descarte o recurso com o comando ALTER TABLE. Esta operação também reescreve os dados VARIANT fragmentados no local para o formato VARIANT não fragmentado e define a propriedade da tabela enableVariantShredding como false.
ALTER TABLE my_table DROP FEATURE "variantShredding-preview";
Limitações
- A fragmentação de dados introduz alguma sobrecarga de escrita.
- A habilitação da fragmentação não converte automaticamente os dados existentes de
VARIANTem uma tabela. Aplica-se somente a dados gravados após a ativação do recurso. Para reescrever os dadosVARIANTexistentes, useREORG TABLE my_table APPLY (SHRED VARIANT). - A fragmentação se aplica a colunas
VARIANTde nível superior ou camposVARIANTem structs, excluindo dadosVARIANTarmazenados dentro de arrays ou mapas.