Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Azure Databricks dá suporte ao mapeamento de colunas para tabelas do Delta Lake, o que permite que as alterações somente de metadados marquem colunas como excluídas ou renomeadas sem reescrever arquivos de dados. Ele também permite que os usuários nomeiem as colunas de tabela do Delta usando caracteres que não são permitidos pelo Parquet, como espaços, para que os usuários possam inserir diretamente os dados CSV ou JSON no Delta, sem a necessidade de renomear colunas devido a restrições de caracteres anteriores.
Importante
As tabelas com mapeamento de colunas ativado só podem ser lidas no Databricks Runtime 10.4 LTS e superior.
Se você usar um padrão herdado que depende de nomes de diretório para ler tabelas Delta, habilitar o mapeamento de colunas poderá interromper cargas de trabalho herdadas. Tabelas particionadas com mapeamento de coluna habilitado usam prefixos aleatórios em vez de nomes de coluna para diretórios de partição. Confira O Delta Lake e o Parquet compartilham estratégias de particionamento?.
Habilitar o mapeamento de coluna em tabelas pode interromper operações downstream que dependem do feed de dados de alterações do Delta. Confira Limitações do feed de dados de alterações para tabelas com mapeamento de coluna habilitado.
Habilitar o mapeamento de coluna em tabelas pode interromper leituras em fluxo contínuo da tabela Delta como fonte, inclusive em Pipelines Declarativos do Lakeflow. Consulte Mapeamento de colunas e alterações de esquemas no Streaming.
Habilitar o mapeamento de coluna
Use o seguinte comando para habilitar o mapeamento de coluna:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.columnMapping.mode' = 'name'
)
O mapeamento de coluna requer os seguintes protocolos Delta:
- Leitor versão 2 ou superior.
- Gravador versão 5 ou superior.
Consulte a compatibilidade de recursos e protocolos do Delta Lake.
Desabilitar o mapeamento de coluna
No Databricks Runtime 15.3 e em versões posteriores, é possível usar o comando DROP FEATURE
para remover o mapeamento de coluna de uma tabela e fazer downgrade do protocolo da tabela.
Importante
Remover o mapeamento de coluna de uma tabela não remove os prefixos aleatórios usados em nomes de diretório para tabelas particionadas.
Confira Remover um recurso de tabela do Delta Lake e fazer downgrade do protocolo de tabela.
Renomear uma coluna
Observação
Disponível no Databricks Runtime 10.4 LTS e superior.
Quando o mapeamento de coluna estiver habilitado para uma tabela do Delta, você poderá renomear uma coluna:
ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name
Para obter mais exemplos, consulte Atualizar esquema de tabela delta lake.
Remover colunas
Observação
Disponível no Databricks Runtime 11.3 LTS e superior.
Quando o mapeamento de coluna estiver habilitado para uma tabela do Delta, você poderá remover uma ou mais colunas:
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 de tabela do Delta Lake.
Caracteres com suporte em nomes de coluna
Quando o mapeamento de coluna está habilitado para uma tabela Delta, você pode incluir espaços e qualquer um desses caracteres nos nomes de coluna da tabela: ,;{}()\n\t=
.
Streaming com mapeamento de colunas e alterações de esquema
Você pode fornecer um local de rastreamento de esquema para habilitar o streaming de tabelas Delta com o mapeamento de coluna habilitado. Isso supera um problema no qual as alterações de esquema não aditivas podem resultar em fluxos interrompidos.
Cada leitura de streaming 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 em fluxo contínuo. Para cargas de trabalho de streaming que combinam dados de várias tabelas Delta de origem, você deve especificar diretórios exclusivos dentro de cada tabela de origem checkpointLocation
.
Importante
Para habilitar o mapeamento de coluna em um trabalho em execução no momento, você deve parar e reiniciar o trabalho pelo menos duas vezes (ou seja, reiniciar duas vezes).
- A primeira reinicialização inicializa o mapeamento de coluna.
- A segunda reinicialização permite que as alterações de esquema entrem em vigor.
Quaisquer outras alterações de esquema (como adicionar ou remover colunas ou alterar um tipo de coluna) também exigirão que você reinicie o trabalho.
A opção schemaTrackingLocation
é usada para especificar o caminho para o rastreamento do esquema, conforme mostrado no exemplo de código a seguir:
checkpoint_path = "/path/to/checkpointLocation"
(spark.readStream
.option("schemaTrackingLocation", checkpoint_path)
.table("delta_source_table")
.writeStream
.option("checkpointLocation", checkpoint_path)
.toTable("output_table")
)