Cómo crear una tabla Delta Transient en Databricks: paso a paso
Este tutorial muestra cómo crear y usar una tabla Delta Transient en Databricks para almacenar datos temporales o intermedios, reduciendo costes de almacenamiento y simplificando la limpieza automática. Es útil cuando necesita persistir resultados esporádicos sin afectar la retención a largo plazo ni el rendimiento.
Pre-requisitos
- Cuenta Databricks con un workspace y un cluster en ejecución.
- Permisos para crear tablas Delta y escribir en un container/ADLS/DBFS.
- Conocimientos básicos de PySpark y Delta Lake.
Paso 1: Entender qué es una tabla Delta Transient y cuándo usarla
Una tabla Delta Transient es una tabla Delta creada con la propiedad delta.isTransient=true. Indica que los datos son temporales y que no se mantendrá una retención larga de los logs de transacción, lo que reduce el coste de almacenamiento. Úsela para staging, ETL intermedio o datos derivados que puedan ser reprocesados.
Paso 2: Crear un pequeño DataFrame de ejemplo
Antes de crear la tabla, vamos a construir un ejemplo de DataFrame con PySpark. Este paso es útil para probar sin datos externos.
from pyspark.sql import SparkSession
from pyspark.sql.functions import current_timestamp
spark = SparkSession.builder.getOrCreate()
data = [(1, 'Alice'), (2, 'Bruno'), (3, 'Carla')]
df = spark.createDataFrame(data, ['id', 'name']).withColumn('created_at', current_timestamp())
df.show()
Paso 3: Escribir la tabla Delta Transient en DBFS o ruta en ADLS
Elija una ruta en DBFS o una ruta en ADLS/Blob. Al escribir con format('delta'), puede definir la propiedad de tabla delta.isTransient. Aquí hay dos formas: escribir como tabla gestionada (CREATE TABLE) o como archivos Delta en una ruta y registrar como tabla.
# Exemplo A: escrever para um caminho (Delta files) e depois criar tabela
path = '/tmp/delta_transient_example'
df.write.format('delta').mode('overwrite').save(path)
# Registar como tabela e marcar como transient
spark.sql(f"CREATE TABLE IF NOT EXISTS transient_db.delta_stage USING DELTA LOCATION '{path}' TBLPROPERTIES ('delta.isTransient' = 'true')")
Paso 4: Crear la tabla Delta Transient directamente con SQL
También puede crear la tabla Delta Transient directamente con SQL, ahorrando pasos. Esto crea los archivos Delta en la ubicación predeterminada del metastore.
spark.sql("""
CREATE TABLE IF NOT EXISTS transient_db.delta_transient_sql (
id INT,
name STRING,
created_at TIMESTAMP
)
USING DELTA
TBLPROPERTIES ('delta.isTransient' = 'true')
""")
# Inserir dados
df.createOrReplaceTempView('tmp_df')
spark.sql('INSERT INTO transient_db.delta_transient_sql SELECT * FROM tmp_df')
Paso 5: Configurar retención de logs y limpieza
Por defecto, las tablas transient no conservan versiones largas, pero conviene ajustar delta.logRetentionDuration y delta.deletedFileRetentionDuration si es necesario. Para limpiar, use VACUUM. Tenga en cuenta que VACUUM tiene límites de seguridad incorporados.
# Ajustar propiedades da tabela
spark.sql("ALTER TABLE transient_db.delta_transient_sql SET TBLPROPERTIES (
'delta.logRetentionDuration' = 'interval 1 day',
'delta.deletedFileRetentionDuration' = 'interval 1 day'
)")
# Executar VACUUM para remover ficheiros antigos (exemplo 1 dia)
spark.sql("VACUUM transient_db.delta_transient_sql RETAIN 24 HOURS")
Paso 6: Buenas prácticas y errores comunes
Use tablas transient solo para datos que puedan regenerarse. Errores comunes: olvidar definir delta.isTransient=true, usar una retención demasiado corta antes de VACUUM (puede borrar estados necesarios) y permisos insuficientes en la ruta de almacenamiento. Pruebe en un entorno de desarrollo antes de producción.
Verificar el resultado
Para confirmar que la tabla está creada y marcada como transient, vea las propiedades de la tabla y el contenido. Debe ver la propiedad delta.isTransient definida y los datos insertados.
# Ver propriedades da tabela
spark.sql("DESCRIBE EXTENDED transient_db.delta_transient_sql").show(truncate=False)
# Ler os dados
spark.sql('SELECT * FROM transient_db.delta_transient_sql').show()
Conclusión
Crear una tabla Delta Transient en Databricks es útil para staging y ETL temporal, reduciendo costes de almacenamiento y simplificando la limpieza. Próximos pasos: integrar esta tabla en un pipeline Databricks Workflows, probar políticas de retención o migrar la lógica a una tabla DLT si desea automatización. Consejo: empiece con una retención conservadora y acórtela gradualmente a medida que gane confianza — ¿cuál es el escenario ETL que quiere mejorar con una tabla transient?