Clonar de forma incremental as tabelas Parquet e Iceberg para Delta Lake

O senhor pode usar a funcionalidade de clone Databricks para converter de forma incremental os dados de Parquet ou Iceberg fonte de dados para gerenciar ou tabelas externas Delta.

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

Visualização

Esse recurso está em pré-visualização pública.

Observação

Este recurso requer o site Databricks Runtime 11.3 LTS ou acima.

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

A Databricks oferece várias opções para a ingestão de dados na lakehouse. A Databricks recomenda usar o 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 o termo tabela de destino refere-se à tabela Delta criada ou atualizada pelas operações.

  • O senhor está realizando uma migração do Parquet ou 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 anexos, atualizações e exclusões.

  • O senhor deseja criar um Snapshot em conformidade com ACID dos dados de origem para geração de relatórios, machine learning, ou lotes ETL.

Qual é a sintaxe do 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, consulte Tipos de clones.

A Databricks recomenda o uso do clone de forma incremental para a maioria das cargas de trabalho. O suporte a clones para Parquet e Iceberg usa a sintaxe SQL.

Observação

O clone para Parquet e Iceberg tem requisitos e garantias diferentes do clone ou da conversão 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`;

O senhor 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 a clonagem de 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 de volta com a 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 uso do clone com mesas Parquet e Iceberg:

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

  • O senhor não pode clonar tabelas Iceberg que sofreram evolução de partição.

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

  • A seguir, as limitações para a clonagem de 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.

    • O Databricks não suporta o trabalho com colunas truncadas do tipo decimal.

  • O clone incremental sincroniza as alterações e propriedades do esquema da tabela de origem. Todas as alterações no esquema e os arquivos de dados gravados diretamente na tabela clonada são substituídos.

  • O Unity Catalog não oferece suporte a clones rasos para tabelas Parquet ou Iceberg.

  • Você não pode usar padrões globais ao definir um caminho.

Observação

Em Databricks Runtime 11.3 LTS, 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.