Administración de transacciones ACID

Completado

La administración de transacciones ACID en Azure Databricks mediante Delta Lake es una manera eficaz de mantener la integridad y la coherencia de los datos en grandes conjuntos de datos.

Habilitación de Delta Lake

Asegúrese de que Delta Lake está habilitado en el área de trabajo de Databricks. En Azure Databricks, Delta Lake está habilitado de forma predeterminada para todos los clústeres.

Creación de una tabla delta

Para empezar a usar transacciones ACID, debe almacenar los datos en formato Delta. Puede crear una tabla Delta mediante la conversión de una tabla Parquet existente o mediante la definición de una nueva tabla directamente en formato Delta. Este es un ejemplo de creación de una nueva tabla Delta mediante Python:

# Create a Delta table
data = spark.range(0, 5)
data.write.format("delta").save("/FileStore/tables/my_delta_table")

Transacciones ACID con Delta Lake

Delta Lake controla automáticamente las transacciones ACID. Todas las operaciones que escriben datos en una tabla Delta (como INSERT, UPDATE, DELETE) se encapsulan automáticamente en una transacción. Estas operaciones se registran en un registro de transacciones, lo que garantiza que toda la operación se realiza correctamente o produce un error (atomicidad) y los datos permanecen coherentes en todas las vistas (coherencia).

Lectura y escritura de datos

Para leer o escribir datos, puede usar los comandos SQL estándar de Spark o la API de DataFrame. Por ejemplo, anexar datos a una tabla Delta podría tener este aspecto mediante Python:

# Append data to a Delta table using DataFrame API
new_data = spark.range(5, 10)
new_data.write.format("delta").mode("append").save("/FileStore/tables/my_delta_table")

Escrituras simultáneas

Delta Lake administra escrituras simultáneas asegurándose de que solo una operación pueda confirmar sus cambios a la vez. Si varios escritores intentan escribir en la misma tabla Delta, Delta Lake usa el control de simultaneidad optimista para controlar conflictos, reintentar o realizar operaciones con errores según sea necesario.

Registro de transacciones

Delta Lake mantiene un registro de transacciones detallado (_delta_log) en segundo plano. Este registro recoge todas las transacciones que han modificado la tabla. Este registro es fundamental para mantener la integridad de la tabla y para admitir características como el viaje en el tiempo, lo que le permite ver y revertir a versiones anteriores de los datos.

Optimización y mantenimiento

Delta Lake proporciona varias utilidades para optimizar el rendimiento de las tablas Delta, como OPTIMIZE para compactar archivos y VACUUM para quitar archivos obsoletos:

# Optimize the Delta table
spark.sql("OPTIMIZE '/FileStore/tables/my_delta_table'")

# Clean up old files
spark.sql("VACUUM '/FileStore/tables/my_delta_table' RETAIN 168 HOURS")

Al aplicar estas funcionalidades, puede administrar grandes conjuntos de datos con necesidades transaccionales complejas de forma eficaz en Azure Databricks, haciendo uso del marco de Delta Lake para controlar las transacciones ACID.