Validação do esquema Delta Lake

O Delta Lake valida automaticamente que o esquema do DataFrame que está sendo gravado é compatível com o esquema da tabela. Delta Lake usa as seguintes regras para determinar se uma gravação de um DataFrame em uma tabela é compatível:

  • Todas as colunas DataFrame devem existir na tabela de destino. Se houver colunas no DataFrame não presentes na tabela, uma exceção será gerada. As colunas presentes na tabela, mas não no DataFrame, são definidas como nulas.

  • Os tipos de dados da coluna DataFrame devem corresponder aos tipos de dados da coluna na tabela de destino. Se eles não corresponderem, uma exceção será levantada.

  • Os nomes das colunas DataFrame não podem diferir apenas por maiúsculas e minúsculas. Isso significa que você não pode ter colunas como “Foo” e “foo” definidas na mesma tabela. Embora você possa usar o Spark no modo com ou sem distinção entre maiúsculas e minúsculas (default), o Parquet diferencia maiúsculas de minúsculas ao armazenar e retornar informações da coluna. O Delta Lake preserva maiúsculas e minúsculas, mas é insensível ao armazenar o esquema e tem essa restrição para evitar possíveis erros, corrupção de dados ou problemas de perda.

O Delta Lake oferece suporte a DDL para adicionar novas colunas explicitamente e a capacidade de atualizar o esquema automaticamente.

Se você especificar outras opções, como partitionBy, em combinação com o modo de acréscimo, o Delta Lake validará a correspondência e lançará um erro para qualquer incompatibilidade. Quando partitionBy não está presente, os anexos seguem automaticamente o particionamento dos dados existentes.

Observação

INSERT A sintaxe fornece imposição de esquema e oferece suporte à evolução do esquema. Se o tipo de dados de uma coluna não puder ser convertido com segurança para o tipo de dados da tabela Delta Lake, uma exceção Runtime será lançada. Se a evolução do esquema estiver habilitada, novas colunas poderão existir como as últimas colunas de seu esquema (ou colunas aninhadas) para que o esquema evolua.

Validação de esquema para mesclagem do Delta Lake

merge valida automaticamente que o esquema dos dados gerados pelas expressões insert e update são compatíveis com o esquema da tabela. Ele usa as seguintes regras para determinar se as operações merge são compatíveis:

  • Para ações update e insert , a coluna de destino especificada deve existir na tabela Delta de destino.

  • Para ações updateAll e insertAll, o dataset de origem deve ter todas as colunas da tabela Delta de destino. O dataset de origem pode ter colunas extras e elas são ignoradas.

  • Para todas as ações, se o tipo de dados gerado pelas expressões que produzem a coluna de destino for diferente das colunas correspondentes na tabela Delta de destino, merge tenta convertê-los para os tipos na tabela.

Consulte Evolução automática do esquema para mesclagem do Delta Lake.