Use o variant shredding para otimizar o desempenho
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.
A fragmentação de variantes melhora o desempenho da query em colunas VARIANT, armazenando campos que ocorrem com frequência como colunas separadas nos arquivos Parquet subjacentes. A fragmentação reduz a E/S necessária para ler campos e melhora a compactação usando um formato de colunas em vez de um blob binário.
Consulte tipoVARIANT, suporte a tipo Variant para Apache Iceberg e Delta Lake e consultar dados variant.
Requisitos
Databricks Runtime 17,2 ou superior é necessário para ler e gravar tabelas VARIANT fragmentadas.
Ativar exclusão
Os administradores do workspace podem ativar o shredding na página Pré-visualizações do workspace. Consulte Gerenciar prévias do Databricks.
Nenhuma alteração de código é necessária para ler ou gravar dados VARIANT com fragmentação.
Depois de ativar o recurso para seu workspace, a fragmentação será ativada automaticamente nas tabelas 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 optar manualmente pela fragmentação, definindo a propriedade de tabela enableVariantShredding como true, e cancelar a opção, 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.
Cancelar a participação na desagregação para uma tabela específica
Se você habilitar a versão Beta de desagregação para seu workspace, mas quiser excluir uma tabela específica, defina a propriedade da tabela enableVariantShredding como false:
- Delta Lake table
- Iceberg table
ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'false');
ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'false');
Remover fragmentaçã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.
- Habilitar o desmembramento não converte automaticamente os dados
VARIANTexistentes em 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.