Clone gradualmente as tabelas Parquet e Iceberg para Delta Lake

Você pode usar a funcionalidade de clonagem do Databricks para converter dados de forma incremental da fonte de dados Parquet ou Iceberg para tabelas gerenciadas ou Delta externas.

O clone do Databricks para Parquet e Iceberg combina a funcionalidade usada para clonar tabelas Delta e converter tabelas em Delta Lake. Este artigo descreve casos de uso e limitações para este recurso e fornece exemplos.

Visualização

Este recurso está em visualização pública.

Observação

Este recurso requer Databricks Runtime 11.3 ouacima.

Quando usar clone para ingestão incremental de dados Parquet ou Iceberg

Databricks fornece várias opções para ingerir dados no lakehouse. Databricks recomenda usar clone para ingerir dados Parquet ou Iceberg nas seguintes situações:

Observação

O termo tabela de origem refere-se à tabela e aos arquivos de dados a serem clonados, enquanto a tabela de destino refere-se à tabela Delta criada ou atualizada pelas operações.

  • Você está realizando uma migração de Parquet ou Iceberg para 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ê deseja criar um Snapshot compatível com ACID de dados de origem para relatórios, machine learning ou lotes ETL.

Qual é a sintaxe para clonar?

Clone for Parquet and Iceberg usa a mesma sintaxe básica usada para clonar tabelas Delta, com suporte para clones rasos e profundos. Para obter mais informações, consulte Tipos de clone.

Databricks recomenda usar clone de forma incremental para a maioria das cargas de trabalho. O suporte de clone para Parquet e Iceberg usa a sintaxe SQL.

Observação

Clonar para Parquet e Iceberg tem requisitos e garantias diferentes de clonar ou converter para Delta. Consulte Requisitos e limitações para clonagem de 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 rasos para tabelas Parquet registradas no metastore, conforme mostrado nos exemplos a seguir:

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 clonagem de tabelas Parquet e Iceberg

Seja usando clones profundos ou rasos, as alterações aplicadas à tabela de destino após a ocorrência do clone não podem ser sincronizadas de volta à tabela de origem. A sincronização incremental com o 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 clone com tabelas Parquet e Iceberg:

  • Você deve registrar tabelas Parquet com partições em um catálogo, como o Hive metastore antes de clonar e usar o nome da tabela para identificar a tabela de origem. Você não pode usar a sintaxe de clone baseada em caminho para tabelas Parquet com partições.

  • Você não pode clonar tabelas Iceberg que sofreram evolução de partição.

  • Você não pode clonar tabelas Iceberg merge-on-read que sofreram atualizações, exclusões ou merge.

  • A seguir estão as limitações para clonar tabelas Iceberg com partições definidas em colunas truncadas:

    • Em Databricks Runtime 12.2 LTS e abaixo, o único tipo de coluna truncada suportado é string.

    • Em Databricks Runtime 13.3 LTS e acima, o senhor pode trabalhar com colunas truncadas dos tipos string, long ou int.

    • Databricks não dá suporte ao trabalho com colunas truncadas do tipo decimal.

  • O clone incremental sincroniza as alterações de esquema e as propriedades da tabela de origem, quaisquer alterações de esquema e arquivos de dados gravados localmente na tabela clonada são substituídos.

  • O Unity Catalog não oferece suporte a clones rasos.

Observação

Em Databricks Runtime 11.3, essa operação não coleta estatísticas em nível de arquivo. Dessa forma, as tabelas de destino não se beneficiam do salto de dados do Delta Lake. As estatísticas em nível de arquivo são coletadas em Databricks Runtime 12.2 LTS e acima.