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 of UTF8_BINARY.

  • Um MAP não pode ter um key que seja uma cadeia de caracteres agrupada.

  • O UniForm não funciona com agrupamentos.