Validação de esquema do Delta Lake

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

  • Todas as colunas do DataFrame precisam existir na tabela de destino. Se houver colunas no DataFrame não presentes na tabela, será gerada uma exceção. As colunas presentes na tabela, mas não no DataFrame, são definidas como nulas.
  • Os tipos de dados da coluna DataFrame precisam corresponder aos tipos de dados de coluna na tabela de destino. Quando não corresponderem, uma exceção é lançada.
  • Os nomes das colunas do DataFrame não podem ser diferentes apenas por caso. Isso significa que não é possível ter colunas como “Foo” e “foo” na mesma tabela. Embora você possa usar o Spark no modo que diferencia ou não (padrão) maiúsculas e minúsculas, o Parquet diferencia maiúsculas e minúsculas ao armazenar e retornar informações de coluna. O Delta Lake preserva maiúsculas e minúsculas, mas não as diferencia 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 dá suporte a DDL para adicionar novas colunas explicitamente e ter a capacidade de atualizar o esquema automaticamente.

Se você especificar outras opções, por exemplo, partitionBy, em combinação com o modo de anexação, o Delta Lake validará se elas corresponderem e lançará um erro em caso de incompatibilidade. Quando partitionBy não está presente, os anexadores seguem automaticamente o particionamento dos dados existentes.

Observação

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

Validação de esquema para mesclagem do Delta Lake

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

  • Para as ações update e insert, as colunas de destino especificadas devem existir na tabela Delta de destino.
  • Para as ações updateAll e insertAll, o conjunto de fonte de origem deve ter todas as colunas da tabela Delta de destino. O conjunto de fonte 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 as colunas de destino forem diferentes das colunas correspondentes na tabela Delta de destino, o merge tentará convertê-las para os tipos na tabela.

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