Pular para o conteúdo principal

Usar clustering líquido para tabelas

clustering líquido é uma técnica de otimização de disposição de dados que substitui o particionamento de tabela e ZORDER. Simplifica o gerenciamento de tabelas e otimiza o desempenho das consultas, organizando automaticamente os dados com base em uma chave clustering .

Ao contrário do particionamento tradicional, você pode redefinir a chave clustering sem sobrescrever os dados existentes. Isso permite que sua disposição de dados evolua juntamente com as necessidades analíticas em constante mudança. clustering líquido se aplica tanto a tabelas de transmissão quanto a visões materializadas.

importante

O cluster líquido está disponível de forma geral para tabelas Delta e em Versão Preliminar Pública para tabelas Apache Iceberg gerenciadas. Para tabelas Delta, o suporte de GA está disponível com o Databricks Runtime 15.2 e acima. A Databricks recomenda usar a versão mais recente do Databricks Runtime para o melhor desempenho. Para tabelas Apache Iceberg gerenciadas, Databricks Runtime 16.4 LTS ou superior é exigido.

As tabelas gerenciadas Apache Iceberg v3 também suportam vetores de exclusão, acompanhamento de linha, simultaneidade em nível de linha e clusters líquido automático. Essas funcionalidades exigem Databricks Runtime 18.0 e acima. Veja Usar recursos v3 do Apache Iceberg.

Quando usar clusteringlíquida

Databricks recomenda o uso clustering líquido para todas as novas tabelas, incluindo tabelas de transmissão e visões materializadas. Os seguintes cenários se beneficiam particularmente do clustering:

  • Consultas que filtram colunas de alta cardinalidade.
  • Tabelas com grande distorção de dados.
  • Mesas de crescimento rápido que exigem manutenção e ajustes constantes.
  • Tabelas com requisitos de gravação concorrente.
  • Tabelas com padrões de acesso variados ou variáveis.
  • Tabelas onde uma key de partição típica pode retornar resultados de um número excessivo ou insuficiente de partições.

Habilitar líquido clustering

Você pode habilitar clustering líquido em uma tabela não particionada existente ou durante a criação da tabela. O agrupamento não é compatível com o particionamento ou ZORDER. Databricks recomenda permitir que a plataforma gerencie todas as operações de otimização e organização dos dados em sua tabela. Após habilitar clustering líquido, execute OPTIMIZE Job para cluster dados incrementalmente. Consulte Como ativar clustering.

Criar tabelas com clustering

Para habilitar os clusters líquidos, adicione a frase CLUSTER BY a uma instrução para criação de tabela, como nos exemplos abaixo. No Databricks Runtime 14.2 e acima, você pode usar as APIs DataFrame e a API DeltaTable em Python ou Scala para habilitar o clustering líquido para tabelas Delta.

Para criar uma tabela vazia com agrupamento:

SQL
CREATE TABLE table1 (col0 INT, col1 STRING) CLUSTER BY (col0);

Para criar uma tabela a partir de dados existentes com clusters, CLUSTER BY deve aparecer após o nome da tabela, e não na cláusula SELECT:

SQL
CREATE TABLE table2 CLUSTER BY (col0)
AS SELECT * FROM table1;

Para copiar a estrutura de uma tabela, incluindo sua configuração de agrupamento:

SQL
CREATE TABLE table3 LIKE table1;
importante

Ao usar APIs DataFrame para definir a chave clustering , você só pode especificar colunas clustering durante a criação da tabela ou ao usar o modo overwrite (como com operações CREATE OR REPLACE TABLE ). Não é possível alterar a chave clustering ao usar o modo append .

Para alterar a chave clustering em uma tabela existente enquanto adiciona dados, use o comando SQL ALTER TABLE para modificar a configuração clustering separadamente das suas operações de gravação de dados. Consulte Alterar chave clustering.

No Databricks Runtime 16.0 e versões superiores, você pode criar tabelas com clustering líquido habilitado usando gravações de transmissão estruturada. Databricks recomenda o uso Databricks Runtime 16.4 ou superior para obter o melhor desempenho, como nos exemplos a seguir:

SQL
CREATE TABLE table1 (
col0 STRING,
col1 DATE,
col2 BIGINT
)
CLUSTER BY (col0, col1);
atenção

As tabelas Delta com clustering líquido ativado usam o gravador Delta versão 7 e o leitor versão 3. Os clientes Delta que não suportam esses protocolos não podem ler essas tabelas. Não é possível fazer downgrade da versão do protocolo da tabela. Consulte a compatibilidade e os protocolos de recursosDelta Lake.

Para substituir a ativação default de recursos (como vetores de exclusão), consulte Substituir a ativação default de recursos (opcional).

Habilitar em tabelas existentes

Para ativar o clustering líquido em uma tabela Delta não particionada existente, faça o seguinte:

SQL
ALTER TABLE <table_name>
CLUSTER BY (<clustering_columns>)

Para tabelas gerenciadas do Apache Iceberg, considere o seguinte:

  • Para tabelas com a especificação v2, é preciso desativar explicitamente os vetores de exclusão e o acompanhamento de linhas ao habilitar o clustering líquido em uma tabela existente.
  • Para tabelas com a especificação v3, não é necessário desativar esses recursos porque os vetores de exclusão e o acompanhamento de linhas são suportados. Veja Usar recursos v3 do Apache Iceberg.
nota

O comportamento default não aplica clustering a dados gravados anteriormente. Para forçar o reagrupamento, use OPTIMIZE FULL ou OPTIMIZE FULL WHERE <predicate>. Consulte Forçar reagrupamento.

Converter uma tabela particionada para clustering líquido

No Databricks Runtime 18.1 e acima, para converter uma tabela Delta Lake particionada existente em clustering líquido, use REPLACE PARTITIONED BY WITH CLUSTER BY em uma instrução ALTER TABLE. A conversão minimiza o tempo de inatividade do leitor e do gravador e oferece suporte a tabelas externas e gerenciadas. Após a conversão, a tabela oferece suporte a leituras com o Databricks Runtime 13.3 LTS e acima.

nota

Para tabelas Iceberg gerenciadas, a conversão não é necessária porque essas tabelas usam definições de partição como chaves de clustering líquido. A execução do comando de conversão gera um erro.

Os benefícios da conversão de tabelas particionadas para cluster líquido incluem:

  • Melhorias de desempenho para tabelas que sofrem com salto de dados insuficiente ou superparticionamento.
  • Melhorias automáticas de desempenho, usando CLUSTER BY AUTO, para tabelas com padrões de query que mudam com frequência.
  • Colunas de clusterização são flexíveis e fáceis de alterar, enquanto o particionamento é rígido e difícil de alterar.
  • Conflitos de gravação reduzidos porque as tabelas com clustering líquido permitem simultaneidade em nível de linha. Consulte Simultaneidade em nível de linha.

Sintaxe

SQL
ALTER TABLE <table_name>
REPLACE PARTITIONED BY WITH CLUSTER BY [( <clustering_columns> ) | AUTO]

A cláusula CLUSTER BY oferece suporte às seguintes opções:

  • ( <clustering_columns> ) : Especifica novas colunas de clustering. A Databricks recomenda manter as novas colunas de cluster semelhantes às colunas de partição originais. O uso de colunas muito diferentes aciona uma grande operação de re-clusterização na primeira execução OPTIMIZE.
  • AUTO : Utiliza as colunas de partição atuais como as colunas de agrupamento iniciais e permite que a otimização preditiva se adapte ao longo do tempo. Disponível apenas para tabelas gerenciadas do Unity Catalog. Consulte clusters líquidos automáticos.
  • Nenhuma opção especificada : Utiliza as colunas de partição atuais como as novas colunas de agrupamento.

Para obter orientação sobre como escolher chaves de clustering ao migrar de tabelas particionadas, consulte Como migrar de particionamento ou Z-order.

Exemplos

Para agrupar em colunas diferentes das partições originais, como para uma tabela particionada em (year, month, day), faça o seguinte:

SQL
ALTER TABLE t1 REPLACE PARTITIONED BY WITH CLUSTER BY (day, id);
OPTIMIZE t1;
nota

Para se beneficiar da alteração das colunas de clustering, você deve executar OPTIMIZE.

Para utilizar o clustering líquido automático e começar com as colunas de partição atuais, faça o seguinte:

SQL
ALTER TABLE t2 REPLACE PARTITIONED BY WITH CLUSTER BY AUTO;

Para manter as colunas de partição atuais como colunas de agrupamento, faça o seguinte:

SQL
ALTER TABLE t3 REPLACE PARTITIONED BY WITH CLUSTER BY;

Lidar com leituras e gravações concorrentes durante a conversão

Após a conversão, o Databricks Runtime 13.3 LTS e acima é compatível com leituras e gravações. O Databricks recomenda o Databricks Runtime 15.4 LTS e superior para cargas de trabalho que leem ou gravam na tabela durante a conversão.

Consulte a seguinte tabela para saber como lidar com cargas de trabalho de leitura e gravação concorrentes durante a conversão:

Tipo de carga de trabalho

Lê durante a conversão

Gravações durante a conversão

Batch

Sem tempo de inatividade. Todas as versões do Databricks Runtime podem ler a tabela durante a conversão.

Sem tempo de inatividade no Databricks Runtime 15.4 e acima. Para Databricks Runtime 15.3 e inferior, a Databricks recomenda que você pause as cargas de trabalho antes de converter e, em seguida, reinicie as cargas de trabalho depois que a conversão for concluída.

Transmissão

Com acompanhamento de esquema e mapeamento de colunas : Reinicie a transmissão sem perder nenhum commit. Sem acompanhamento de esquema e mapeamento de colunas : A transmissão gera uma exceção. Para reiniciar com uma nova localização de ponto de verificação e versão inicial. Commits não estão perdidos.

Reiniciar a transmissão sem perder commits.

Verificar ou reverter uma conversão

Para confirmar a conversão, execute DESCRIBE EXTENDED para ver as novas colunas de clustering. Execute DESCRIBE HISTORY para ver uma série de operações de REORG, uma operação de UPGRADE PROTOCOL e uma operação de REPLACE PARTITIONED BY WITH CLUSTER BY.

Para reverter uma conversão, use RESTORE para retornar à versão anterior. Alternativamente, você pode reescrever a tabela utilizando REPLACE TABLE ... PARTITIONED BY (...) AS SELECT * FROM ....

Para reverter usando RESTORE, execute os comandos a seguir:

SQL
ALTER TABLE my_table CLUSTER BY NONE;
ALTER TABLE my_table UNSET TBLPROPERTIES ('delta.liquid.hierarchicalClusteringColumns');
RESTORE TABLE my_table TO VERSION AS OF <version_number_before_conversion>;

See RESTORE.

Converter uma tabela particionada por uma coluna de timestamp

Para converter uma tabela (t1) que é particionada por uma coluna de timestamp (timestamp_col) e usar a coluna de timestamp como uma chave de agrupamento, você deve definir configurações adicionais:

SQL
SET spark.databricks.delta.liquidConversion.statsGeneration.enabled = false;
ALTER TABLE t1 REPLACE PARTITIONED BY WITH CLUSTER BY (timestamp_col, id);
ANALYZE TABLE t1 COMPUTE DELTA STATISTICS;

Se você tentar converter uma coluna de partição de timestamp em uma coluna de agrupamento sem essas configurações, o comando gera um erro:

Text
ALTER TABLE REPLACE PARTITIONED BY WITH CLUSTER BY cannot auto-generate stats on table with column event_ts due to unsupported type: timestamp. Disable stats auto-generation by setting 'spark.databricks.delta.liquidConversion.statsGeneration.enabled' to 'false' and retry the command again. SQLSTATE: 42000

Limitações de conversão

Aplicam-se as seguintes limitações ao comando REPLACE PARTITIONED BY WITH CLUSTER BY de conversão:

  • Tabelas de transmissão e views materializadas criadas a partir de um pipeline de Lakeflow Spark Declarative Pipelines não são suportadas. Para usar o cluster líquido, é necessário atualizar a definição do pipeline para usar CLUSTER BY em vez de PARTITIONED BY.
  • Tabelas que utilizam Delta Sharing com filtragem de partição não são compatíveis. Para obter informações sobre filtragem de partição para Delta Sharing, consulte Especificar partições de tabela para compartilhar.

Remover chave clustering

Para remover a chave clustering, use a seguinte sintaxe:

SQL
ALTER TABLE table_name CLUSTER BY NONE;

Escolha a tecla clustering

dica

Databricks recomenda o uso clustering líquido automático para tabelas compatíveis, que seleciona de forma inteligente a chave clustering com base nos seus padrões de consulta. Veja clusteringautomático de líquidos.

diretrizes de seleção principais

Ao especificar manualmente a chave clustering , escolha as colunas com base nas colunas mais frequentemente usadas nos filtros de consulta. Você pode definir a chave clustering em qualquer ordem. Se duas colunas estiverem altamente correlacionadas, você só precisa incluir uma delas como key clustering .

Você pode especificar até quatro chaves clustering . Para tabelas menores (menos de 10 TB), usar mais chaves clustering pode degradar o desempenho ao filtrar em uma única coluna. Por exemplo, a filtragem com quatro chaves tem um desempenho pior do que a filtragem com duas chaves. No entanto, à medida que o tamanho da tabela aumenta, essa diferença de desempenho torna-se insignificante para consultas de coluna única.

A chave de agrupamento deve ser composta por colunas que contenham estatísticas coletadas. Por default, as estatísticas são coletadas nas primeiras 32 colunas de uma tabela Delta . Consulte Especificar colunas de estatísticas.

Tipos de dados suportados

O agrupamento suporta estes tipos de dados para a chave clustering :

  • Data
  • Carimbo de data/hora
  • TimestampNTZ (Databricks Runtime 14.3 LTS e versões superiores)
  • String
  • Inteiro, Longo, Curto, Byte
  • Número de ponto flutuante, número de ponto flutuante duplo, decimal

Migrando de particionamento ou Z-order

importante

A Databricks recomenda usar a conversão automática com o comando REPLACE PARTITIONED BY WITH CLUSTER BY. Consulte Converter uma tabela particionada para clustering líquido.

Se você estiver convertendo uma tabela existente, considere as seguintes recomendações:

Técnica atual de otimização de dados

Recomendação para chaves de clustering

Particionamento no estilo Hive

Utilizar colunas de partição como chaves de cluster.

indexação de Z-order

Utilizar as colunas ZORDER BY como chaves de clustering.

Particionamento no estilo Hive e Z-order

Utilizar as colunas de partição e as colunas ZORDER BY como chaves de agrupamento.

Colunas geradas para reduzir a cardinalidade (por exemplo, data para um registro de data e hora)

Use a coluna original como clustering key, e não crie uma coluna gerada.

Líquido automático clustering

No Databricks Runtime 15.4 LTS e acima, é possível habilitar o clustering líquido automático para tabelas Delta gerenciadas pelo Unity Catalog. Para tabelas Apache Iceberg v3 gerenciadas pelo Unity Catalog, o clustering líquido automático requer Databricks Runtime 18.0 e acima. O liquid clustering automático permite ao Databricks escolher inteligentemente chaves de clustering para otimizar o desempenho da consulta, utilizando a cláusula CLUSTER BY AUTO.

nota

O clustering líquido automático também é suportado para visualizações materializadas e tabelas de transmissão, incluindo LakeFlow Spark Declarative Pipelines e pipelines autônomos. Especifique CLUSTER BY AUTO em sua definição de pipeline ou SQL.

Como funciona o clustering automático de líquidos

clustering automático de líquidos proporciona otimização inteligente com base nos seus padrões de utilização:

  • Requer otimização preditiva : seleção automática key e execução de operações clustering de forma assíncrona como operações de manutenção. Consulte Otimização preditiva para Unity Catalog gerenciar tabelas.
  • Analisa a carga de trabalho de consultas : Databricks analisa o histórico de carga de trabalho de consultas da tabela e identifica as melhores colunas candidatas para clustering.
  • Adapta-se às mudanças : Se os seus padrões de consulta ou distribuições de dados mudarem ao longo do tempo, clustering líquido automático seleciona uma nova chave para otimizar o desempenho.
  • Seleção com foco em custos : Databricks altera a chave clustering somente quando a economia de custos prevista com as melhorias no descarte de dados supera o custo do clustering de dados.

clustering automático de líquidos pode não selecionar a chave pelos seguintes motivos:

  • A tabela é muito pequena para se beneficiar do clustering líquido.
  • A tabela já possui um esquema clustering eficaz, seja por meio de chave manual anterior ou por ordem de inserção natural que corresponde aos padrões de consulta.
  • A tabela não tem consultas frequentes.
  • O senhor não está usando Databricks Runtime 15.4 LTS ou acima.

Você pode aplicar clustering líquido automático a todas as tabelas Unity Catalog , independentemente das características dos dados e da consulta. A heurística decide se é economicamente vantajoso selecionar a chave de clustering .

Compatibilidade de versão do Databricks Runtime

Você pode ler ou gravar tabelas com clustering automático ativado em todas as versões Databricks Runtime que suportam clustering líquido. No entanto, a seleção inteligente key depende dos metadados introduzidos no Databricks Runtime 15.4 LTS.

Utilize Databricks Runtime 15.4 LTS ou superior para garantir que a chave selecionada automaticamente beneficie todas as suas cargas de trabalho e que essas cargas de trabalho sejam consideradas ao selecionar uma nova chave.

Ativar ou desativar clusteringautomático de líquidos

Para criar uma tabela com liquid clustering automático:

SQL
CREATE OR REPLACE TABLE table1 (column01 int, column02 string) CLUSTER BY AUTO;

Para ativar o liquid clustering automático em uma tabela existente, incluindo tabelas com chaves especificadas manualmente:

SQL
ALTER TABLE table1 CLUSTER BY AUTO;
nota

SQL não oferece suporte a dicas de coluna de clustering inicial ao ativar o clustering líquido automático. Para fornecer dicas para a seleção inicial de chaves, use a API do Python.

Para desativar a clusterização líquida automática:

SQL
ALTER TABLE table1 CLUSTER BY NONE;

Para desativar a clusterização líquida automática e especificar as colunas de clusterização:

SQL
ALTER TABLE table1 CLUSTER BY (column01, column02);

Se uma tabela existente tiver o clustering líquido automático ativado, executar CREATE OR REPLACE table_name sem CLUSTER BY AUTO desativa o clustering automático e não preserva as colunas de clustering. Para preservar o liquid clustering automático e quaisquer colunas selecionadas anteriormente, inclua CLUSTER BY AUTO na instrução de substituição. Com CLUSTER BY AUTO, a otimização preditiva usa a carga de trabalho de consulta histórica da tabela para identificar as melhores chaves de clustering.

Verificar se o clustering automático está ativado

Para verificar se uma tabela tem o clustering líquido automático ativado, use DESCRIBE TABLE ou SHOW TBLPROPERTIES.

Se o líquido automático clustering estiver ativado, a propriedade clusterByAuto será definida como true. A propriedade clusteringColumns mostra as colunas de clustering atuais que foram selecionadas automática ou manualmente.

Limitações

O cluster líquido automático não está disponível para tabelas Apache Iceberg v2 gerenciadas. Tem suporte para tabelas Apache Iceberg v3 gerenciadas no Databricks Runtime 18.0 e acima.

Gravar dados em uma tabela em cluster

Para gravar em uma tabela Delta em cluster, é necessário utilizar um cliente gravador Delta que suporte todos os recursos da tabela de protocolo de gravação Delta utilizados pelo liquid clustering. Para gravar em uma tabela Iceberg em cluster, é possível utilizar a API REST do Catálogo Iceberg do Unity Catalog. Em Databricks, é necessário utilizar Databricks Runtime 13.3 LTS e acima.

operações que suportam clustering em gravação

As operações que se agrupam na gravação incluem o seguinte:

  • INSERT INTO operações
  • CTAS e RTAS declarações
  • COPY INTO do formato Parquet
  • spark.write.mode("append")

Limite de tamanho para clustering

O clustering na gravação só é acionado quando os dados na transação atendem a um limite de tamanho. Esses limites variam de acordo com o número de colunas de clustering e são mais baixos para tabelas gerenciadas pelo Unity Catalog do que para outras tabelas Delta.

Número de colunas de clustering

Tamanho do limite para tabelas gerenciadas do Unity Catalog

Tamanho limite para outras tabelas Delta

1

64 MB

256 MB

2

256 MB

1 GB

3

512 MB

2 GB

4

1 GB

4 GB

Como nem todas as operações aplicam clustering líquido, a Databricks recomenda a execução frequente de OPTIMIZE para garantir que todos os dados sejam agrupados de forma eficiente.

transmitir cargas de trabalho

spark.databricks.delta.liquid.eagerClustering.streaming.enabled As cargas de trabalho de transmissão estruturada suportam o recurso “ clustering ” (exclusão ao escrever) quando você define a configuração “ Spark ” (exclusão ao escrever) em “ true”. O agrupamento para essas cargas de trabalho só é acionado se pelo menos uma das últimas cinco atualizações de transmissão exceder um limite de tamanho da tabela acima.

Como acionar o clustering

Otimização preditiva executada automaticamente OPTIMIZE comando para tabelas habilitadas. Consulte Otimização preditiva para Unity Catalog gerenciar tabelas. Ao usar a otimização preditiva, o site Databricks recomenda desativar qualquer trabalho agendado do OPTIMIZE.

Para ativar clustering, você precisa usar Databricks Runtime 13.3 LTS ou superior. Databricks recomenda Databricks Runtime 17.2 ou superior para um desempenho OPTIMIZE mais rápido em tabelas grandes. Use o comando OPTIMIZE na sua tabela:

SQL
OPTIMIZE table_name;

clustering líquido é incremental , o que significa que OPTIMIZE apenas reescreve os dados conforme necessário para acomodar os dados que precisam clustering. OPTIMIZE não reescreve arquivos de dados com chave clustering que não correspondem aos dados que estão sendo agrupados. Consulte Forçar reagrupamento.

Se o senhor não estiver usando a otimização preditiva, o site Databricks recomenda programar regularmente o OPTIMIZE Job para clusterizar os dados. Para tabelas com muitas atualizações ou inserções, o site Databricks recomenda programar um Job OPTIMIZE a cada uma ou duas horas. Como o clustering líquido é incremental, a maioria dos OPTIMIZE Job para tabelas em cluster é executada rapidamente.

Reagrupamento forçado

Em Databricks Runtime 16.0 e acima, é possível forçar o reclustering de todos os registros em uma tabela com a seguinte sintaxe:

SQL
OPTIMIZE table_name FULL;
importante

A execução do OPTIMIZE FULL reagrupa todos os dados existentes conforme necessário. No caso de tabelas grandes que não tenham sido agrupadas anteriormente na chave especificada, essa operação pode levar horas.

execução OPTIMIZE FULL quando você habilita clustering pela primeira vez ou altera a chave clustering . Se você já executou OPTIMIZE FULL anteriormente e não houve alteração na chave clustering , a execução OPTIMIZE FULL é a mesma que a de OPTIMIZE. Neste cenário, OPTIMIZE usa uma abordagem incremental e reescreve apenas os arquivos que não foram compactados anteriormente. Use sempre OPTIMIZE FULL para garantir que a disposição dos dados reflita a chave de clustering atual.

Reagrupamento parcial

No Databricks Runtime 18.1 e versões superiores, você pode forçar o reagrupamento de um subconjunto de registros usando OPTIMIZE FULL WHERE <predicate>. Um arquivo é incluído se qualquer parte de seu intervalo se sobrepuser ao predicado. Consulte os parâmetros.

SQL
OPTIMIZE events FULL WHERE event_date >= '2025-01-01';

Leia dados de uma tabela em cluster

Você pode ler dados em uma tabela Delta agrupada usando qualquer cliente Delta Lake que suporte a leitura de vetores de exclusão. Utilizando a API REST Catalog do Iceberg, você pode ler dados em uma tabela clusterizada do Iceberg. clustering líquido melhora o desempenho das consultas através da omissão automática de dados ao filtrar pela chave de clustering .

SQL
SELECT * FROM table_name WHERE cluster_key_column_name = "some_value";

gerenciar chave clustering

Veja como uma tabela é agrupada.

Você pode utilizar comandos DESCRIBE para ver as chaves de clustering da tabela, como nos exemplos a seguir:

SQL
DESCRIBE TABLE table_name;

DESCRIBE DETAIL table_name;

Alterar a chave clustering

Você pode alterar as chaves de clustering das tabelas quando quiser, basta executar um comando ALTER TABLE , como no exemplo a seguir:

SQL
ALTER TABLE table_name CLUSTER BY (new_column1, new_column2);

Ao alterar a chave clustering , as operações subsequentes de OPTIMIZE e de gravação usarão a nova abordagem clustering , mas os dados existentes não serão reescritos. Para reescrever os dados existentes com a chave clustering atualizada, consulte Forçar reagrupamento.

Você pode também desativar o clustering definindo as chaves como NONE, como no exemplo a seguir:

SQL
ALTER TABLE table_name CLUSTER BY NONE;

Definir a chave cluster como NONE não reescreve os dados agrupados, mas impede que futuras operações OPTIMIZE usem a chave clustering .

Utilize clustering de líquidos a partir de um mecanismo externo.

O senhor pode ativar o clustering líquido para gerenciar tabelas do Iceberg a partir de mecanismos externos do Iceberg. Para ativar o clustering líquido, especifique colunas de partição ao criar uma tabela. Unity Catalog interpreta as partições como clustering key. Por exemplo, executar o comando abaixo no OSS Spark:

SQL
CREATE OR REPLACE TABLE main.schema.icebergTable
PARTITIONED BY c1;

Para desativar clustering de líquidos:

SQL
ALTER TABLE main.schema.icebergTable DROP PARTITION FIELD c2;

Para alterar a chave clustering usando a evolução da partição Iceberg :

SQL
ALTER TABLE main.schema.icebergTable ADD PARTITION FIELD c2;

Se você especificar uma partição usando uma transformação de bucket, Unity Catalog descarta a expressão e usa a coluna como key clustering :

SQL
CREATE OR REPLACE TABLE main.schema.icebergTable
PARTITIONED BY (bucket(c1, 10));

Compatibilidade para tabelas com clustering líquido

O cluster líquido utiliza recursos de tabelas Delta que exigem versões específicas do Databricks Runtime para leitura e gravação. As tabelas criadas com liquid clustering no Databricks Runtime 14.1 e acima usam o checkpoint V2 por padrão. Você pode ler e gravar tabelas com pontos de verificação V2 no Databricks Runtime 13.3 LTS e acima. Consulte Ponto de Verificação V2.

Para dar suporte a leitores que utilizam o Databricks Runtime 12.2 LTS a 13.2, desative o checkpoint V2 e faça o downgrade do protocolo da tabela. Veja Fazer downgrade para a versão clássica.

Substituir default recurso enablement (opcional)

Você pode substituir a ativação default do recurso da tabela Delta durante a ativação clustering líquido. Isso impede atualizações dos protocolos de leitura e gravação associados a esses recursos de tabela. Você precisa ter uma tabela existente para concluir os seguintes passos:

  1. Use ALTER TABLE para definir a propriedade da tabela que desativa um ou mais recursos. Por exemplo, para desativar os vetores de exclusão, execute o seguinte:

    SQL
    ALTER TABLE table_name SET TBLPROPERTIES ('delta.enableDeletionVectors' = false);
  2. Ative o clustering líquido na tabela executando o seguinte:

    SQL
    ALTER TABLE <table_name>
    CLUSTER BY (<clustering_columns>)

A tabela a seguir fornece informações sobre os recursos Delta que você pode substituir e como a ativação afeta a compatibilidade com as versões do Databricks Runtime.

Recurso do Delta

Compatibilidade de runtime

Propriedade de substituir a ativação

Impacto no clustering de líquidos se desativado

Vetores de deleção

Leituras e gravações requerem Databricks Runtime 12.2 LTS ou acima.

'delta.enableDeletionVectors' = false

Desativar vetores de exclusão desativa a concorrência em nível de linha, tornando as transações e as operações clustering mais propensas a entrar em conflito. Consulte Concorrência em nível de linha.

DELETEOs comandos MERGE e UPDATE podem ser executados mais lentamente.

Acompanhamento de linha

Gravações requerem Databricks Runtime 13.3 LTS ou superior. Pode ser lido de qualquer versão do Databricks Runtime.

'delta.enableRowTracking' = false

Desativar o acompanhamento de linhas desativa a concorrência em nível de linha, tornando as transações e as operações clustering mais propensas a entrar em conflito. Consulte Concorrência em nível de linha.

Ponto de verificação V2

Leituras e gravações exigem o Databricks Runtime 13.3 LTS e superior.

'delta.checkpointPolicy' = 'classic'

Não há impacto no comportamento clustering do líquido. Consulte o Ponto de Verificação V2.

Limitações

  • Databricks Runtime 15.1 e versões anteriores : o agrupamento na gravação não oferece suporte a consultas de origem que incluam filtros, junções ou agregações.
  • Databricks Runtime 15.4 LTS e versões anteriores : Não é possível criar uma tabela com clustering líquido ativado usando uma transmissão estruturada de gravação. Você pode usar a transmissão estruturada para gravar dados em uma tabela existente com clustering líquido ativado.
  • Apache Iceberg v2 : A concorrência em nível de linha não é suportada em tabelas gerenciadas Apache Iceberg v2 porque os vetores de exclusão e o acompanhamento de linha não são suportados.
    • A simultaneidade em nível de linha é suportada em tabelas Apache Iceberg v3 gerenciadas porque a especificação v3 suporta vetores de exclusão e acompanhamento de linha. Veja Usar recursos v3 do Apache Iceberg.