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.
Aplica-se a:
Databricks SQL
Databricks Runtime
Converte uma tabela Apache Parquet existente em uma tabela Delta in-loco. Esse comando lista todos os arquivos do diretório, cria um log de transações do Delta Lake que rastreia esses arquivos e infere automaticamente o esquema de dados lendo os rodapés de todos os arquivos Parquet. O processo de conversão coleta estatísticas para melhorar o desempenho das consultas na tabela Delta convertida. Se você fornecer um nome de tabela, o metastore também será atualizado e refletirá a tabela como tabela Delta.
Esse comando dá suporte à conversão de tabelas do Apache Iceberg cujo formato de arquivo subjacente é Parquet. Nesse caso, o conversor gera o log de transações do Delta Lake com base no manifesto de arquivo nativo, no esquema e nas informações de particionamento da tabela Iceberg.
Sintaxe
CONVERT TO DELTA table_name [ NO STATISTICS ] [ PARTITIONED BY clause ]
Parâmetros
-
Um identificador de tabela opcionalmente qualificado ou um caminho para um diretório de arquivo
parquetouiceberg. O nome não deve incluir uma especificação temporal ou especificação de opções. Para tabelas do Iceberg, você só pode usar caminhos, pois a conversão de tabelas do Iceberg gerenciadas não tem suporte. SEM ESTATÍSTICAS
Ignora a coleta de estatísticas durante o processo de conversão e conclui a conversão mais rapidamente. Após a tabela ser convertida ao Delta Lake, você pode usar
OPTIMIZE ZORDER BYpara reorganizar o layout de dados e gerar estatísticas.-
Particiona a tabela criada pelas colunas especificadas. Quando
table_nameé um caminho, oPARTITIONED BYé necessário nos dados particionados. Quando otable_nameé um identificador de tabela qualificado, a cláusulaPARTITIONED BYé opcional e as especificações da partição são carregadas do metastore. Em qualquer das abordagens, o processo de conversão será anulado e lançará uma exceção se a estrutura do diretório não estiver de acordo com a especificaçãoPARTITIONED BYfornecida ou carregada.Observação
No Databricks Runtime 11.1 e versões inferiores, o
PARTITIONED BYé um argumento necessário para todos os dados particionados.
Exemplos
Observação
Você não precisa fornecer informações de particionamento para tabelas de Iceberg ou tabelas registradas no metastore.
CONVERT TO DELTA database_name.table_name; -- only for Parquet tables
CONVERT TO DELTA parquet.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/table`
PARTITIONED BY (date DATE); -- if the table is partitioned
CONVERT TO DELTA iceberg.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/table`; -- uses Iceberg manifest for metadata
Advertências
Qualquer arquivo não rastreado pelo Delta Lake é invisível e pode ser excluído quando você executa VACUUM. Evite atualizar ou acrescentar arquivos de dados durante o processo de conversão. Após a tabela ser convertida, todas as gravações devem passar pelo Delta Lake.
É possível que várias tabelas externas compartilhem o mesmo diretório Parquet subjacente. Nesse caso, se você executar CONVERT em uma das tabelas externas, não será possível acessar as outras tabelas externas, pois seu diretório subjacente foi convertido de Parquet para Delta Lake. Para consultar ou gravar nessas tabelas externas novamente, você deve executar CONVERT nelas também.
CONVERT preenche as informações do catálogo, como propriedades de esquema e de tabela, para o log de transações do Delta Lake. Se o diretório subjacente já tiver sido convertido ao Delta Lake e seus metadados forem diferentes daqueles do catálogo, será gerada uma convertMetastoreMetadataMismatchException.
Ao usar o Databricks Runtime, se você quiser que CONVERT substitua os metadados existentes no log de transações do Delta Lake, defina a configuração do SQL spark.databricks.delta.convert.metadataCheck.enabled como false.