Validación de esquema de Delta Lake

Delta Lake valida automáticamente que el esquema del DataFrame que se escribe sea compatible con el esquema de la tabla. Delta Lake usa las reglas siguientes para determinar si es compatible una escritura de un DataFrame en una tabla:

  • Todas las columnas del DataFrame deben existir en la tabla de destino. Si hay columnas en el DataFrame que no están presentes en la tabla, se produce una excepción. Las columnas presentes en la tabla, pero no en el DataFrame, se establecen en NULL.
  • Los tipos de datos de las columnas del DataFrame deben coincidir con los tipos de datos de las columnas de la tabla de destino. Si no coinciden, se produce una excepción.
  • Los nombres de las columnas del DataFrame no pueden diferenciarse solo por el uso de mayúsculas y minúsculas. Esto significa que no puede haber columnas como "Foo" y "foo" definidas en la misma tabla. Aunque puede usar Spark en modo de distinción o no distinción (valor predeterminado) entre mayúsculas y minúsculas, Parquet distingue entre mayúsculas y minúsculas al almacenar y devolver información de las columnas. Delta Lake conserva las mayúsculas y minúsculas, pero no las tiene en cuenta al almacenar el esquema. Presenta esta restricción para evitar posibles errores, datos dañados o problemas de pérdidas.

Delta Lake admite el DDL para agregar columnas nuevas explícitamente y la capacidad de actualizar el esquema de forma automática.

Si especifica otras opciones, como partitionBy, en combinación con el modo de anexión, Delta Lake valida que coincidan y genera un error para cualquier problema de coincidencia. Cuando partitionBy no está presente, la anexión se realiza automáticamente después de la creación de particiones de los datos existentes.

Nota:

La sintaxis INSERT proporciona aplicación de esquemas y admite la evolución de esquemas. Si el tipo de datos de una columna no se puede convertir de forma segura al tipo de datos de la tabla de Delta Lake, se produce una excepción en tiempo de ejecución. Si se habilita la evolución del esquema, pueden existir nuevas columnas como últimas columnas del esquema (o columnas anidadas) para que el esquema evolucione.

Validación del esquema para la combinación de Delta Lake

merge valida automáticamente que el esquema de los datos generados por las expresiones de inserción y actualización sea compatible con el esquema de la tabla. Usa las siguientes reglas para determinar si la operación merge es compatible:

  • En el caso de las acciones update y insert, las columnas de destino especificadas deben existir en la tabla Delta de destino.
  • En el caso de las acciones updateAll y insertAll, el conjunto de datos de origen debe tener todas las columnas de la tabla Delta de destino. El conjunto de datos de origen puede tener más columnas, pero estas se omiten.
  • Para todas las acciones, si el tipo de datos generado por las expresiones que producen las columnas de destino es diferente de las columnas correspondientes de la tabla Delta de destino, merge intenta convertirlas a los tipos de la tabla.

Consulte Evolución automática del esquema para la combinación de Delta Lake.