Pular para o conteúdo principal

Renomear e soltar colunas com o mapeamento de colunas do Delta Lake

O Databricks oferece suporte ao mapeamento de colunas para tabelas do Delta Lake, o que permite que alterações somente de metadados marquem colunas como excluídas ou renomeadas sem reescrever os arquivos de dados. Ele também permite que os usuários nomeiem colunas da tabela Delta usando caracteres que não são permitidos pelo Parquet, como espaços, para que os usuários possam ingerir diretamente dados CSV ou JSON no Delta sem a necessidade de renomear colunas devido a restrições de caracteres anteriores.

important

As tabelas com mapeamento de coluna ativado só podem ser lidas em Databricks Runtime 10.4 LTS e acima.

Se o senhor usar um padrão legado que dependa de nomes de diretório para ler tabelas Delta, a ativação do mapeamento de colunas poderá prejudicar as cargas de trabalho legadas. Tabelas particionadas com mapeamento de colunas ativado usam prefixos aleatórios em vez de nomes de colunas para diretórios de partições. Consulte O Delta Lake e o Parquet compartilham estratégias de particionamento?

A ativação do mapeamento de colunas nas tabelas pode interromper as operações downstream que dependem do feed de dados de alteração do Delta. Consulte Alterar as limitações do feed de dados para tabelas com o mapeamento de colunas ativado.

A ativação do mapeamento de colunas nas tabelas pode interromper as leituras de transmissão da tabela Delta como fonte, inclusive no pipeline LakeFlow Declarative. Veja a transmissão com mapeamento de colunas e alterações no esquema.

Ativar mapeamento de colunas

Use o seguinte comando para ativar o mapeamento de colunas:

SQL
  ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.columnMapping.mode' = 'name'
)

O mapeamento de colunas requer os seguintes protocolos Delta:

  • Leitor versão 2 ouacima.
  • Writer versão 5 ouacima.

Consulte Delta Lake recurso compatibilidade e protocolos.

Desativar mapeamento de colunas

Em Databricks Runtime 15.3 e acima, o senhor pode usar o comando DROP FEATURE para remover o mapeamento de coluna de uma tabela e fazer downgrade do protocolo da tabela.

important

Eliminar o mapeamento de colunas de uma tabela não remove os prefixos aleatórios usados em nomes de diretórios para tabelas particionadas.

Consulte Drop a Delta Lake table recurso e downgrade table protocol.

Renomear uma coluna

nota

Disponível em Databricks Runtime 10.4 LTS e acima.

Quando o mapeamento de colunas está ativado para uma tabela Delta, o senhor pode renomear uma coluna:

SQL
ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name

Para obter mais exemplos, consulte Atualizar o esquema da tabela Delta Lake.

Soltar colunas

nota

Disponível em Databricks Runtime 11.3 LTS e acima.

Quando o mapeamento de colunas está ativado para uma tabela Delta, o senhor pode eliminar uma ou mais colunas:

SQL
ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)

Para obter mais detalhes, consulte Atualizar o esquema da tabela Delta Lake.

Caracteres suportados nos nomes das colunas

Quando o mapeamento de coluna está ativado para uma tabela Delta, o senhor pode incluir espaços e qualquer um desses caracteres nos nomes de coluna da tabela: ,;{}()\n\t=.

transmissão com mapeamento de colunas e alterações de esquema

O senhor pode fornecer um local de acompanhamento de esquema para permitir a transmissão de Delta tabelas com mapeamento de coluna ativado. Isso supera um problema em que alterações de esquema não aditivas poderiam resultar em transmissão interrompida.

Cada transmissão lida em uma fonte de dados deve ter seu próprio schemaTrackingLocation especificado. O schemaTrackingLocation especificado deve estar contido no diretório especificado para o checkpointLocation da tabela de destino para gravação de transmissão. Para cargas de trabalho de transmissão que combinam dados de várias tabelas de origem Delta, o senhor deve especificar diretórios exclusivos no checkpointLocation para cada tabela de origem.

important

Para ativar o mapeamento de coluna em um trabalho em execução, o senhor deve parar e reiniciar o trabalho pelo menos duas vezes (ou seja, reiniciar duas vezes).

  • A primeira reinicialização inicializa o mapeamento da coluna.
  • A segunda reinicialização permite que as alterações do esquema entrem em vigor.

Quaisquer outras alterações no esquema (como adicionar ou remover colunas ou alterar um tipo de coluna) também exigirão que o senhor reinicie o Job.

A opção schemaTrackingLocation é usada para especificar o caminho para o acompanhamento do esquema, conforme mostrado no exemplo de código a seguir:

Python
checkpoint_path = "/path/to/checkpointLocation"

(spark.readStream
.option("schemaTrackingLocation", checkpoint_path)
.table("delta_source_table")
.writeStream
.option("checkpointLocation", checkpoint_path)
.toTable("output_table")
)