Todos los productos
Search
Centro de documentos

E-MapReduce:Preguntas frecuentes

Última actualización: Sep 05, 2026

Esta página responde a las preguntas más comunes sobre el uso de Delta Lake en Alibaba Cloud EMR.

¿Por qué no puedo crear una tabla?

Delta Lake requiere el parámetro LOCATION al crear una tabla. Este parámetro especifica el directorio donde se almacenan los datos de la tabla, y la tabla resultante funciona como una tabla externa en Apache Spark.

El comportamiento depende de si dicho directorio ya existe:

  • El directorio no existe: Delta Lake crea una nueva tabla con el esquema que usted definió.

  • El directorio ya existe: El esquema que especifique debe coincidir exactamente con el esquema registrado en el archivo de registro de Delta dentro de ese directorio. Cualquier discrepancia provoca un error en la creación de la tabla.

Revise el archivo de registro de Delta existente en el directorio y ajuste el esquema de su sentencia CREATE TABLE para que coincida con él.

¿Por qué Spark Streaming genera tantos archivos pequeños en Delta Lake?

Spark Streaming escribe los datos en forma de minilotes, y cada uno de estos produce uno o más archivos. Si los tamaños de lote son pequeños y la ejecución es continua, la cantidad de archivos se acumula rápidamente.

Elija una estrategia según sus requisitos de latencia:

Estrategia

Cuándo utilizarla

Compromiso

Aumentar el tamaño del minilote

Se acepta una latencia de algunos minutos

Menos archivos, pero una latencia de extremo a extremo ligeramente mayor

Ejecutar OPTIMIZE de forma programada

Se requiere respuesta en tiempo real

Mayor sobrecarga por compactación frecuente; los archivos se acumulan entre ejecuciones

Ambas estrategias pueden combinarse: establezca un tamaño de lote mayor para reducir la acumulación de archivos y ejecute OPTIMIZE periódicamente para compactar los restantes.

¿Por qué OPTIMIZE tarda tanto en ejecutarse?

Cuando OPTIMIZE no se ha ejecutado durante mucho tiempo, se acumula una gran cantidad de archivos pequeños en Delta Lake. OPTIMIZE debe leerlos y reescribirlos todos, lo que aumenta proporcionalmente el tiempo de ejecución.

Configure una tarea programada para ejecutar OPTIMIZE de forma regular. La frecuencia adecuada depende de su carga de trabajo:

  • Mejor rendimiento de consultas: ejecute OPTIMIZE con mayor frecuencia (diariamente o incluso más seguido).

  • Menor costo: ejecútelo con menor frecuencia.

Un trabajo diario de OPTIMIZE es un buen punto de partida, preferiblemente en horas de baja demanda, cuando los costos de cómputo son menores. Ajuste la frecuencia según el rendimiento observado de sus consultas y los costos asociados.

¿Por qué falla OPTIMIZE?

Delta Lake utiliza un mecanismo de bloqueo optimista: cuando varias transacciones de escritura se confirman al mismo tiempo, una de ellas falla. Dado que OPTIMIZE es en sí mismo una transacción de escritura, puede entrar en conflicto con escrituras simultáneas.

Es más probable que OPTIMIZE falle cuando un trabajo de streaming elimina o actualiza datos de forma continua, un patrón común en los flujos de trabajo de captura de datos modificados (CDC). Si el trabajo de streaming solo agrega datos sin realizar eliminaciones ni actualizaciones, OPTIMIZE no fallará.

Para reducir los conflictos, particione la tabla por tiempo y ejecute OPTIMIZE en cada partición una vez que los datos se hayan escrito por completo en ella. Esto evita que OPTIMIZE compita con una ventana de escritura activa.

¿Por qué permanecen archivos pequeños después de ejecutar OPTIMIZE?

OPTIMIZE compacta los archivos pequeños en otros más grandes, pero no elimina los archivos originales. Delta Lake conserva esos archivos para garantizar el aislamiento de instantáneas; las consultas que iniciaron antes de la compactación aún pueden leer los archivos originales para acceder a una instantánea consistente de la tabla.

Para eliminar los archivos compactados, ejecute VACUUM después de OPTIMIZE. VACUUM quita los archivos que han sido reemplazados y que superaron el periodo de retención (7 días de forma predeterminada).

¿Por qué permanecen archivos pequeños después de ejecutar VACUUM?

VACUUM solo elimina los archivos que cumplen dos condiciones: haber sido fusionados por OPTIMIZE y haber superado el periodo de retención. El periodo de retención predeterminado es de 7 días.

Si los archivos aún están dentro del periodo de retención o si todavía no se han fusionado, VACUUM los dejará en su lugar. Ejecute primero OPTIMIZE y espere a que transcurra el periodo de retención antes de ejecutar VACUUM para asegurar que los archivos sean elegibles para su eliminación.

¿Cómo elimino archivos pequeños fusionados recientemente?

Los archivos fusionados recientemente aún se encuentran dentro del periodo de retención de 7 días, por lo que VACUUM no los eliminará de forma predeterminada. Esta ventana de retención protege el acceso a instantáneas históricas; eliminar archivos demasiado pronto puede interrumpir las consultas que dependen del viaje en el tiempo.

Aviso

Anular el periodo de retención puede provocar errores en las consultas activas si estas aún están leyendo los archivos que usted elimina. Proceda únicamente si tiene la certeza de que ninguna consulta ni trabajo de streaming está accediendo a instantáneas históricas de esta tabla.

Si está seguro de que es seguro proceder, utilice uno de estos métodos:

  • Deshabilitar la comprobación de retención: Establezca la propiedad de configuración de Spark spark.databricks.delta.retentionDurationCheck.enabled en false y pásela como parámetro al iniciar su trabajo de Spark. Luego, ejecute VACUUM con un intervalo de retención corto.

  • Acortar el periodo de retención global: En spark-defaults.conf, establezca spark.databricks.delta.properties.defaults.deletedFileRetentionDuration en interval 1 hour. Esto se aplica de manera global a todas las tablas Delta del clúster.

¿Por qué permanecen los archivos de registro de Delta después de ejecutar VACUUM?

VACUUM gestiona los archivos de datos, no los archivos de registro de Delta. Delta Lake maneja automáticamente el ciclo de vida de los archivos de registro:

  • Cada 10 confirmaciones, Delta Lake fusiona los archivos de registro.

  • Después de la fusión, Delta Lake identifica y elimina los archivos de registro caducados.

  • El periodo de retención predeterminado para los archivos de registro de Delta es de 30 días.

No se requiere intervención manual. Si observa muchos archivos de registro, es probable que aún se encuentren dentro de la ventana de retención de 30 días o que no hayan alcanzado el umbral de 10 confirmaciones.

¿Delta Lake admite la programación automática de OPTIMIZE o VACUUM?

No. Delta Lake es una biblioteca, no un entorno de ejecución, por lo que no cuenta con un programador integrado. OPTIMIZE y VACUUM deben activarse externamente.

Configure una tarea programada en su sistema de orquestación de flujos de trabajo, como Apache Airflow o un trabajo cron, para ejecutar estos comandos periódicamente en sus tablas Delta.