Utilize a fragmentação de variantes para otimizar o desempenho

A fragmentação de variantes melhora o desempenho das consultas em colunas VARIANT ao armazenar campos que ocorrem com frequência como colunas separadas nos ficheiros Parquet subjacentes. A trituração reduz a I/O necessária para ler campos e melhora a compressão ao usar um formato colunar em vez de um blob binário.

Veja VARIANT tipo, Suporte a tipos variantes para Apache Iceberg e Delta Lake, e Consultar dados variantes.

Requirements

Databricks Runtime 17.3 ou superior é necessário para ler e escrever tabelas VARIANT trituradas. Para um desempenho ótimo de consultas com recolha de estatísticas variantes e salto de dados, a Databricks recomenda o Databricks Runtime 18.1 ou superior.

Ativar destruição de dados

A partir do Databricks Runtime 17.3, a destruição é automaticamente ativada quando cria uma nova tabela com uma ou mais VARIANT colunas usando CREATE TABLE.

CREATE OR REPLACE TABLE e ALTER TABLE não ativam automaticamente a trituração. Isto evita alterar o comportamento de destruição das mesas e cargas de trabalho existentes.

Para tabelas existentes, pode optar manualmente por triturar definindo a enableVariantShredding propriedade da tabela para TRUE e optar por sair definindo a propriedade para FALSE:

Lago Delta

ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'true');

Tabela de iceberg

ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'true');

Verifique se a fragmentação está ativada verificando se a propriedade da tabela enableVariantShredding está definida como true.

Desative a fragmentação para uma tabela específica

Para excluir uma tabela específica da destruição em futuras escritas, defina a enableVariantShredding propriedade da tabela para FALSE:

Lago Delta

ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'false');

Tabela de iceberg

ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'false');

Remova o sharding de uma tabela existente

Para remover a fragmentação em uma tabela existente, remova o recurso com o comando ALTER TABLE. Esta operação também reescreve diretamente no local os dados fragmentados VARIANT no seu formato original VARIANT e define a propriedade enableVariantShredding da tabela como false.

ALTER TABLE my_table DROP FEATURE "variantShredding";

Limitations

  • A destruição de dados introduz alguma sobrecarga nas gravações.
  • Ativar a trituração não converte automaticamente os dados existentes VARIANT numa tabela. Ele só se aplica a dados gravados depois que o recurso é ativado. Para reescrever dados existentes VARIANT, use REORG TABLE my_table APPLY (SHRED VARIANT).
  • A fragmentação aplica-se às colunas de nível superior VARIANT ou aos campos VARIANT em structs, excluindo os dados armazenados dentro de matrizes ou mapas VARIANT.