Validação do esquema do Delta Lake

O Delta Lake valida automaticamente se o esquema do DataFrame que está a ser escrito é compatível com o esquema da tabela. O Delta Lake utiliza as seguintes regras para determinar se uma escrita de um DataFrame para uma tabela é compatível:

  • Todas as colunas do DataFrame têm de existir na tabela de destino. Se existirem colunas no DataFrame que não estão presentes na tabela, é gerada uma exceção. As colunas presentes na tabela, mas não no DataFrame, estão definidas como nulas.
  • Os tipos de dados da coluna DataFrame têm de corresponder aos tipos de dados de coluna na tabela de destino. Se não corresponderem, é gerada uma exceção.
  • Os nomes de colunas do DataFrame não podem ser diferentes apenas por maiúsculas e minúsculas. Isto significa que não pode ter colunas como "Foo" e "foo" definidas na mesma tabela. Embora possa utilizar o Spark no modo sensível a maiúsculas e minúsculas (predefinição), Parquet é sensível às maiúsculas e minúsculas ao armazenar e devolver informações da coluna. O Delta Lake preserva maiúsculas e minúsculas, mas não é sensível ao armazenamento do esquema e tem esta restrição para evitar potenciais erros, danos em dados ou problemas de perda.

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

Se especificar outras opções, como partitionBy, em combinação com o modo de acréscimo, o Delta Lake valida que correspondem e gera um erro de correspondência. Quando partitionBy não estiver presente, acrescenta automaticamente a criação de partições dos dados existentes.

Nota

INSERT A sintaxe fornece imposição de esquema e suporta a evolução do esquema. Se o tipo de dados de uma coluna não puder ser lançado em segurança para o tipo de dados da tabela do Delta Lake, é emitida uma exceção de runtime. Se a evolução do esquema estiver ativada, podem existir novas colunas como as últimas colunas do esquema (ou colunas aninhadas) para que o esquema evolua.

Validação de esquema para intercalação do Delta Lake

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

  • Para update e insert ações, as colunas de destino especificadas têm de existir na tabela Delta de destino.
  • Para updateAll e insertAll ações, o conjunto de dados de origem tem de ter todas as colunas da tabela Delta de destino. O conjunto de dados de origem pode ter colunas adicionais e estas são ignoradas.
  • Para todas as ações, se o tipo de dados gerado pelas expressões que produzem as colunas de destino for diferente das colunas correspondentes na tabela Delta de destino, merge tenta lancá-las para os tipos na tabela.

Veja Evolução automática do esquema para a intercalação do Delta Lake.