Clonar incrementalmente tabelas Parquet e Iceberg no Delta Lake
Você pode usar a funcionalidade de clonagem do Azure Databricks para converter incrementalmente dados de fontes de dados Parquet ou Iceberg em tabelas Delta gerenciadas ou externas.
O clone do Azure Databricks para Parquet e Iceberg combina a funcionalidade usada para clonar tabelas Delta e converter tabelas no Delta Lake. Este artigo descreve casos de uso e limitações para esse recurso e fornece exemplos.
Importante
Esse recurso está em uma versão prévia.
Observação
Esse recurso requer o Databricks Runtime 11.3 LTS ou superior.
Quando usar o clone para ingestão incremental de dados Parquet ou Iceberg
O Azure Databricks fornece várias opções para ingerir dados no lakehouse. O Databricks recomenda usar o clone para ingerir dados Parquet ou Iceberg nas seguintes situações:
Observação
A tabela de origem do termo se refere à tabela e aos arquivos de dados a serem clonados, enquanto a tabela de destino se refere à tabela Delta criada ou atualizada pela operação.
- Você está executando uma migração do Parquet ou do Iceberg para o Delta Lake, mas precisa continuar usando tabelas de origem.
- Você precisa manter uma sincronização somente de ingestão entre uma tabela de destino e uma tabela de origem de produção que recebe acréscimos, atualizações e exclusões.
- Você quer criar um instantâneo compatível com ACID dos dados de origem para relatórios, aprendizado de máquina ou ETL em lote.
Qual é a sintaxe para o clone?
O clone para Parquet e Iceberg usa a mesma sintaxe básica usada para clonar tabelas Delta, com suporte para clones rasos e profundos. Para obter mais informações, confira Tipos de clones.
O Databricks recomenda usar o clone incrementalmente para a maioria das cargas de trabalho. O suporte a clones para Parquet e Iceberg usa sintaxe SQL.
Observação
Clonar para Parquet e Iceberg tem requisitos e garantias diferentes de clonar ou converter em Delta. Consulte Requisitos e limitações para clonar tabelas Parquet e Iceberg.
Para clonar profundamente uma tabela Parquet ou Iceberg usando um caminho de arquivo, use a seguinte sintaxe:
CREATE OR REPLACE TABLE <target-table-name> CLONE parquet.`/path/to/data`;
CREATE OR REPLACE TABLE <target-table-name> CLONE iceberg.`/path/to/data`;
Para clonar superficialmente uma tabela Parquet ou Iceberg usando um caminho de arquivo, use a seguinte sintaxe:
CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE parquet.`/path/to/data`;
CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE iceberg.`/path/to/data`;
Você também pode criar clones profundos ou superficiais para tabelas Parquet registradas no metastore, conforme mostrado nos seguintes exemplos:
CREATE OR REPLACE TABLE <target-table-name> CLONE <source-table-name>;
CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE <source-table-name>;
Requisitos e limitações para clonar tabelas Parquet e Iceberg
Seja usando clones profundos ou superficiais, as alterações aplicadas à tabela de destino após a ocorrência do clone não podem ser sincronizadas novamente com a tabela de origem. A sincronização incremental com clone é unidirecional, permitindo que as alterações nas tabelas de origem sejam aplicadas automaticamente às tabelas Delta de destino.
As seguintes limitações adicionais se aplicam ao usar o clone com tabelas Parquet e Iceberg:
- Você deve registrar tabelas Parquet com partições em um catálogo como Catálogo do Unity ou o metastore do Hive herdado antes de clonar e usar o nome da tabela para identificar a tabela de origem. Não é possível usar a sintaxe de clone baseada em caminho para tabelas Parquet com partições.
- Você não pode clonar tabelas Iceberg que experimentaram a evolução da partição.
- Não é possível clonar tabelas mescladas e lidas do Iceberg que tenham experimentado atualizações, exclusões ou mesclagens.
- Veja a seguir as limitações para clonar tabelas do Iceberg com partições definidas em colunas truncadas:
- No Databricks Runtime 12.2 LTS e abaixo, o único tipo de coluna truncada com suporte é
string
. - No Databricks Runtime 13.3 LTS e superior, você pode trabalhar com colunas truncadas dos tipos
string
,long
ouint
. - O Azure Databricks não dá suporte ao trabalho com colunas truncadas do tipo
decimal
.
- No Databricks Runtime 12.2 LTS e abaixo, o único tipo de coluna truncada com suporte é
- O clone incremental sincroniza as alterações e propriedades do esquema da tabela de origem. Todas as alterações de esquema e arquivos de dados gravados diretamente na tabela clonada são substituídos.
- O Catálogo do Unity não oferece suporte a clones superficiais para tabelas Parquet ou Iceberg.
- Você não pode usar padrões glob ao definir um caminho.
Observação
No Databricks Runtime 11.3 LTS, essa operação não coleta estatísticas no nível do arquivo. Dessa forma, as tabelas de destino não se beneficiam do salto de dados do Delta Lake. As estatísticas no nível do arquivo são coletadas no Databricks Runtime 12.2 LTS ou superior.