Use o variant shredding para otimizar o desempenho
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.3 ou acima é necessário para ler e gravar tabelas VARIANT fragmentadas. Para desempenho de query ideal com coleta de estatísticas de variante e salto de dados, o Databricks recomenda o Databricks Runtime 18.1 ou acima.
Ativar exclusão
A partir do Databricks Runtime 17.3, a fragmentação é habilitada automaticamente ao criar uma nova tabela com uma ou mais colunas VARIANT usando CREATE TABLE.
CREATE OR REPLACE TABLE e ALTER TABLE não ativam automaticamente a fragmentação. Isso evita alterar o comportamento de fragmentação de tabelas e cargas de trabalho existentes.
Para tabelas existentes, você pode ativar manualmente a fragmentação definindo a propriedade da tabela enableVariantShredding como TRUE e desativar definindo a propriedade como FALSE:
- 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
Para excluir uma tabela específica da fragmentação em gravações futuras, 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.