Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:
Databricks SQL
Databricks Runtime
Converte uma tabela Apache Parquet existente numa Tabela Delta no local. Este comando lista todos os arquivos no diretório, cria um log de transações 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 da consulta na tabela Delta convertida. Se você fornecer um nome de tabela, o metastore também será atualizado para refletir que a tabela agora é uma tabela Delta.
Este comando suporta a conversão de tabelas 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 ficheiros nativos, 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
parquetdiretório ouicebergarquivo. O nome não deve incluir uma especificação temporal ou uma especificação de opções. Para tabelas Iceberg, você só pode usar caminhos, pois a conversão de tabelas iceberg gerenciadas não é suportada. SEM ESTATÍSTICAS
Ignore a coleta de estatísticas durante o processo de conversão e conclua a conversão mais rapidamente. Depois que a tabela for convertida em Delta Lake, você poderá usar
OPTIMIZE ZORDER BYpara reorganizar o layout de dados e gerar estatísticas.-
Particione a tabela criada pelas colunas especificadas. Quando
table_nameé um caminho, oPARTITIONED BYé necessário para dados particionados. Quandotable_nameé um identificador de tabela qualificado, aPARTITIONED BYcláusula é opcional e as especificações das partições são carregadas do metastore. Em qualquer uma das abordagens, o processo de conversão aborta e lança uma exceção se a estrutura de diretórios não estiver em conformidade com a especificação fornecida ou carregadaPARTITIONED BY.Nota
No Databricks Runtime 11.1 e inferior,
PARTITIONED BYé um argumento necessário para todos os dados particionados.
Exemplos
Nota
Não é necessário fornecer informações de particionamento para tabelas Iceberg ou tabelas registadas 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
Limitações
Qualquer arquivo não rastreado pelo Delta Lake é invisível e pode ser excluído quando você executa VACUUMo . Você deve evitar atualizar ou anexar arquivos de dados durante o processo de conversão. Depois de a tabela ser convertida, certifique-se de que todas as escritas passem pelo Delta Lake.
É possível que múltiplas tabelas externas possam partilhar o mesmo diretório subjacente do tipo Parquet. Neste caso, se você executar CONVERT em uma das tabelas externas, então você não será capaz de acessar as outras tabelas externas porque seu diretório subjacente foi convertido de Parquet para Delta Lake. Para consultar ou gravar nessas tabelas externas novamente, você também deve executar CONVERT nelas.
CONVERT preenche as informações do catálogo, como propriedades de esquema e tabela, no log de transações do Delta Lake. Se o diretório subjacente já tiver sido convertido em Delta Lake e seus metadados forem diferentes dos metadados do catálogo, um convertMetastoreMetadataMismatchException será lançado.
Ao usar o Databricks Runtime, se quiseres CONVERT substituir os metadados existentes no log de transações do Delta Lake, define spark.databricks.delta.convert.metadataCheck.enabled a configuração SQL como false.