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?
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:
SQLSET 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 Drop Delta table recurso.
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.