Suporte de coleta para o Delta Lake
O senhor pode especificar o agrupamento de campos de strings nas tabelas Delta em Databricks Runtime 16.1 e acima.
A ativação do agrupamento para uma tabela adiciona o recurso de tabela de escritor collations-preview
. O senhor pode ler tabelas com agrupamento ativado em Databricks Runtime 15.4 e acima. Consulte Como Databricks o Delta Lake senhor pode gerenciar a compatibilidade do recurso?
Observação
Em default, Delta Lake define o agrupamento dos campos de cadeias de caracteres como UTF8_BINARY
.
Crie uma tabela com agrupamento no nível da coluna
O senhor pode criar uma nova tabela com agrupamento no nível da coluna usando o seguinte comando:
CREATE TABLE $tableName (
nonCollatedColName STRING,
collatedColName STRING COLLATE UNICODE,
structColName STRUCT<nestedFieldName: STRING COLLATE UNICODE>,
mapColName MAP<STRING, STRING COLLATE UNICODE>,
arrayColName ARRAY<STRING COLLATE UNICODE>
) USING delta
Alterar uma coluna da tabela para especificar o agrupamento
O senhor pode atualizar uma coluna existente para usar o agrupamento usando o seguinte comando:
ALTER TABLE tableName ALTER COLUMN columnName TYPE newType
Para remover um agrupamento nãodefault (se houver):
ALTER TABLE tableName ALTER COLUMN columnName TYPE STRING COLLATE UTF8_BINARY
Para alterar o agrupamento de colunas para utf8_lcase
:
ALTER TABLE tableName ALTER COLUMN columnName TYPE STRING COLLATE UTF8_LCASE
A alteração do agrupamento de uma tabela não atualiza automaticamente as estatísticas ou a disposição dos dados gravados anteriormente. Para melhorar o salto de arquivos sobre os dados históricos sob o novo agrupamento, o site Databricks recomenda o seguinte:
execução
ANALYZE table_name COMPUTE DELTA STATISTICS
para atualizar as estatísticas de ignição de arquivos para os arquivos de dados existentes.Para as tabelas com o líquido clustering ativado, execute
OPTIMIZE FULL table_name
para atualizar o líquido clustering.Para tabelas que usam
ZORDER
, faça o seguinte:Desative a otimização incremental na sessão Spark substituindo a configuração default Spark pelo seguinte comando:
SET spark.databricks.optimize.incremental=false
execução
OPTIMIZE table_name ZORDER BY zorder_column
para reescrever todos os arquivos de dados existentes.
A colação sempre será respeitada pelo Databricks nos resultados da consulta.
Desativar o agrupamento de uma tabela
O senhor deve desativar explicitamente o agrupamento para cada coluna de cadeias de caracteres em uma tabela antes de eliminar o recurso de agrupamento.
Use a sintaxe a seguir para definir o agrupamento de uma coluna como UTF8_BINARY
:
ALTER TABLE table_name
ALTER COLUMN column_name
TYPE STRING
COLLATE UTF8_BINARY
Para eliminar a tabela recurso, execute o seguinte comando:
ALTER TABLE table_name
DROP FEATURE collations-preview
Consulte Remover recursos de tabela Delta.
evolução do esquema e agrupamento
O agrupamento interage com a evolução do esquema usando as seguintes regras:
Se uma coluna de origem já existir na tabela de destino, o agrupamento da coluna na tabela de destino permanecerá inalterado.
Se uma coluna de origem tiver um agrupamento especificado, a coluna adicionada à tabela de destino usará o agrupamento especificado.
Se a tabela de destino não tiver o agrupamento ativado quando uma coluna com agrupamento for adicionada, o recurso de tabela
collations-preview
será ativado.
Limitações
As seguintes limitações existem para tabelas com agrupamento habilitado:
Delta As tabelas criadas externamente com um agrupamento não reconhecido pelo site Databricks Runtime geram uma exceção quando consultadas.
Não há suporte para o Delta Sharing.
As colunas agrupadas não podem ser usadas com as restrições
CHECK
.As colunas geradas não podem usar agrupamento.
As colunas agrupadas não podem ser usadas com as colunas de índice do filtro bloom.
Não há suporte para agrupamento nas APIs OSS Delta Lake para Scala ou Python. O senhor deve usar as APIs Spark SQL ou DataFrame para ativar o agrupamento.
A substituição dinâmica de partições não é suportada em colunas agrupadas.
As colunas agrupadas não podem ser referenciadas em consultas stateful de transmissão estruturada.
Leitores externos que não respeitam o recurso da tabela
collations-preview
fallback para default collation ofUTF8_BINARY
.Um
MAP
não pode ter um key que seja uma cadeia de caracteres agrupada.O UniForm não funciona com agrupamentos.