Pular para o conteúdo principal

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?

nota

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:

SQL
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:

SQL
ALTER TABLE tableName ALTER COLUMN columnName TYPE newType

Para remover um agrupamento nãodefault (se houver):

SQL
ALTER TABLE tableName ALTER COLUMN columnName TYPE STRING COLLATE UTF8_BINARY

Para alterar o agrupamento de colunas para utf8_lcase:

SQL
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:

      SQL
      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:

SQL
ALTER TABLE table_name
ALTER COLUMN column_name
TYPE STRING
COLLATE UTF8_BINARY

Para eliminar a tabela recurso, execute o seguinte comando:

SQL
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 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.