Implementar el cumplimiento de esquemas
La aplicación del esquema es una de las características clave de Delta Lake, lo que le ayuda a mantener la integridad y la coherencia de los datos al garantizar que los datos escritos en una tabla Delta se adhieren al esquema esperado. Esta característica impide que los datos erróneos dañen el conjunto de datos, lo que puede ser útil en entornos de producción en los que varios procesos o usuarios puedan escribir en el mismo conjunto de datos. Para implementar la aplicación de esquemas en Delta Lake, sigue estos pasos:
Cree una tabla Delta con un esquema definido
Cree una tabla Delta con un esquema específico mediante programación usando Spark SQL o utilizando la API DataFrame. A continuación se muestra un ejemplo de cómo crear una tabla Delta con un esquema definido mediante Spark SQL.
-- Create a Delta table using Spark SQL
CREATE TABLE my_delta_table_schema (
id INT,
name STRING,
age INT
);
Como alternativa, si usa DataFrames para escribir datos:
-- Insert valid data
INSERT INTO my_delta_table_schema (id, name, age)
VALUES
(1, 'Alice', 30),
(2, 'Bob', 25);
Aplique esquema en escrituras
Una vez configurada una tabla Delta con un esquema definido, Delta Lake aplica automáticamente este esquema en todas las operaciones de escritura posteriores. Si un DataFrame entrante no coincide con el esquema de la tabla Delta, se produce un error en la operación de escritura. A continuación se muestra un ejemplo de cómo probar la aplicación del esquema en las escrituras.
-- Attempt to insert data with an invalid schema (missing 'age' field)
INSERT INTO my_delta_table_schema (id, name)
VALUES
(3, 'Charlie');
Control de errores de coincidencia de esquema
Puede usar la instrucción COMBINAR para controlar las actualizaciones e inserciones de una manera que admita los cambios de esquema.
-- Define a temporary view with new data
CREATE OR REPLACE TEMP VIEW my_new_delta_table_schema AS
SELECT * FROM VALUES
(3, 'Charlie', 28),
(4, 'Diana', 35)
AS my_new_delta_table_schema(id, name, age);
-- Use MERGE to upsert data
MERGE INTO my_delta_table_schema AS target
USING my_new_delta_table_schema AS source
ON target.id = source.id
WHEN MATCHED THEN
UPDATE SET
target.name = source.name,
target.age = source.age
WHEN NOT MATCHED THEN
INSERT (id, name, age)
VALUES (source.id, source.name, source.age);
Si los tipos de datos entrantes son diferentes pero compatibles, puede usar la función de conversión para alinear los esquemas.
-- Insert data with casting to match the schema
INSERT INTO my_delta_table_schema
SELECT
cast(id as INT),
cast(name as STRING),
cast(age as INT)
FROM my_new_delta_table_schema;
Siguiendo estos pasos, puede usar eficazmente las funcionalidades de cumplimiento de esquemas de Delta Lake en Azure Databricks para mantener la calidad y la integridad de los datos.