Entornos de ejecución de Apache Spark en Fabric

Fabric Runtime es una plataforma integrada en Azure basada en Apache Spark que permite la ejecución y gestión de experiencias de ingeniería de datos y ciencia de datos. Combina componentes clave de orígenes internos y de código abierto, lo que proporciona a los clientes una solución completa. Para simplificar, consulta Fabric Runtime impulsado por Apache Spark como Fabric Runtime.

Principales componentes de Fabric Runtime:

  • Apache Spark: una potente biblioteca informática distribuida de código abierto que permite realizar tareas de análisis y procesamiento de datos a gran escala. Apache Spark proporciona una plataforma versátil y de alto rendimiento para experiencias de ingeniería de datos y ciencia de datos.

  • Delta Lake : una capa de almacenamiento de código abierto que aporta transacciones ACID y otras características de confiabilidad de datos a Apache Spark. Integrado en Fabric Runtime, Delta Lake mejora las capacidades de procesamiento de datos y garantiza la coherencia de los datos en múltiples operaciones simultáneas.

  • The Native Execution Engine - una mejora transformadora para las cargas de trabajo de Apache Spark, que ofrece ganancias significativas de rendimiento al ejecutar directamente consultas de Spark en infraestructura lakehouse. Integrado de forma fluida, no requiere cambios en el código y evita el bloqueo por parte del proveedor. Soporta tanto los formatos Parquet como Delta en las APIs de Apache Spark en Runtime 1.3 (Spark 3.5) y Runtime 2.0 (Spark 4.1).

    Los operadores admitidos se transfieren desde Spark basado en JVM a un camino de ejecución vectorizado en C++ mediante Apache Gluten y Velox, proporcionando un procesamiento columnar y acelerado por SIMD con soporte nativo para formatos Parquet y Delta. Cuando no se admite un operador, la ejecución vuelve automáticamente a Spark basada en JVM. En pruebas comparativas representativas (TPC-DS a escala factor 1000 mediante Delta), el motor alcanzó un rendimiento hasta seis veces más rápido en comparación con Spark de código abierto, lo que se traduce a aproximadamente 83% ahorro de costos de proceso en un clúster de Fabric de tamaño fijo.

    La ruta de acceso nativa conserva las optimizaciones de consultas de Fabric Spark, incluida la ejecución de consultas adaptativas, las reescrituras basadas en costos, la eliminación de columnas y la proyección de predicados. Puedes alternar la ejecución nativa por aplicación usando la spark.native.enabled configuración. Durante la ejecución de celdas del cuaderno, Fabric Spark Advisor muestra alertas en tiempo real cuando la ejecución vuelve a Spark basada en JVM, lo que le ayuda a diagnosticar cuándo no se aplica la descarga nativa.

  • Paquetes por defecto para Java/Scala, Python y R: paquetes compatibles con diversos lenguajes y entornos de programación. Estos paquetes se instalan y configuran automáticamente, por lo que los desarrolladores pueden aplicar sus lenguajes de programación preferidos para las tareas de procesamiento de datos.

  • El Fabric Runtime se basa en un sistema operativo robusto de código abierto, asegurando compatibilidad con diversas configuraciones de hardware y requisitos del sistema.

En la siguiente tabla, encontrarás una comparación completa de componentes clave, incluyendo las versiones de Apache Spark, sistemas operativos compatibles, Java, Scala, Python, Delta Lake y R, para los entornos de ejecución basados en Apache Spark dentro de la plataforma Fabric.

Sugerencia

Use siempre la versión en tiempo de ejecución (GA) más reciente y disponible con carácter general para la carga de trabajo de producción, que actualmente es Runtime 1.3.

Componente Tiempo de ejecución 1.3 Runtime 2.0
Etapa de lanzamiento Disponibilidad general Versión preliminar pública
Versión de Apache Spark 3.5.5 4.1
Sistema operativo Mariner 2.0 Mariner 3.0
Versión de Java 11 Veintiuno
Versión de Scala 2.12.17 2.13.16
Versión de Python 3,11 3.13
Versión de Delta Lake 3.2 4,2

Visite Runtime 1.3 o Runtime 2.0 para explorar detalles, nuevas características, mejoras y escenarios de migración para la versión específica del entorno de ejecución.

Optimizaciones de Fabric

En Fabric, tanto el motor Spark como las implementaciones de Delta Lake incorporan optimizaciones y características específicas de cada plataforma. Estas funciones utilizan integraciones nativas dentro de la plataforma. Puedes desactivar todas estas funciones para lograr la funcionalidad estándar de Spark y Delta Lake. Los runtimes de Fabric para Apache Spark abarcan:

  • La versión completa de código abierto de Apache Spark.
  • Una colección de casi 100 mejoras integradas y distintas de rendimiento de las consultas. Estas mejoras incluyen características como la caché de particiones (habilitando la caché de particiones de FileSystem para reducir las llamadas al metastore) y la combinación cruzada para la proyección de subconsulta escalar.
  • Caché inteligente integrada.

Dentro del Fabric Runtime para Apache Spark y Delta Lake, las capacidades nativas de escritor cumplen dos funciones clave:

  • Ofrecen un rendimiento diferenciado para cargas de trabajo de escritura, optimizando el proceso de escritura.
  • Por defecto optan por optimización en orden V de los archivos Delta Parquet. La optimización en orden V de Delta Lake es crucial para ofrecer un rendimiento de lectura superior en todos los motores Fabric. Para comprender mejor cómo funciona y cómo gestionarlo, consulta optimización de tablas Delta Lake y V-order.

Compatibilidad con múltiples entornos de ejecución

Fabric soporta múltiples runtimes, así que puedes cambiar entre ellos y reducir el riesgo de problemas de compatibilidad o interrupciones.

Note

Un entorno de ejecución de Spark incluye una versión específica de Python como parte de su conjunto de componentes. Por ejemplo, Runtime 1.3 incluye Python 3.11. Esta versión de Python es independiente del núcleo de cuadernos de Python que seleccionas para cuadernos puros de Python. Para consultar el ciclo de vida del kernel del cuaderno de Python, consulta Entorno de ejecución y ciclo de vida del kernel del cuaderno de Python en Fabric.

De forma predeterminada, todas las áreas de trabajo nuevas usan la versión más reciente del entorno de ejecución de disponibilidad general, que actualmente es Runtime 1.3.

Para cambiar la versión de tiempo de ejecución a nivel de área de trabajo, vaya a Configuración del área de trabajo>Ingeniería de datos/Ciencia>Configuración de Spark. Desde la pestaña de entorno , seleccione la versión de entorno de ejecución deseada entre las opciones disponibles. Seleccione Guardar para confirmar la selección.

Captura de pantalla que muestra dónde seleccionar la versión de ejecución para la configuración del espacio de trabajo.

Después de hacer este cambio, todos los elementos creados por el sistema dentro del espacio de trabajo, incluyendo las casas del lago, las descripciones de puestos de Spark y los cuadernos, usarán la versión de ejecución a nivel de espacio de trabajo recién seleccionada a partir de la siguiente sesión de Spark. Si actualmente estás usando un notebook con una sesión existente para una tarea o cualquier actividad relacionada con lakehouse, esa sesión de Spark se mantiene tal cual. Sin embargo, a partir de la siguiente sesión o trabajo, se aplica la versión de ejecución seleccionada.

Para cambiar el tiempo de ejecución a nivel Environment de objeto, crea un nuevo objeto de Entorno o abre uno existente. En el desplegable Runtime, selecciona la versión del entorno de ejecución que desees entre las opciones disponibles, selecciona Save y luego Publish los cambios. A continuación, puede usar este Environment elemento con su Notebook o su Spark Job Definition.

Captura de pantalla que muestra dónde seleccionar la versión en tiempo de ejecución para el elemento Entorno.

Consecuencias de los cambios de runtime en la configuración de Spark

El sistema migra todos los ajustes de Spark. Sin embargo, si el sistema identifica que una configuración de Spark no es compatible con Runtime B, muestra un mensaje de advertencia y no implementa la configuración.

Cambio en tiempo de ejecución de la configuración de Spark.

Consecuencias de los cambios de runtime en la administración de la biblioteca

El sistema de gestión de bibliotecas migra todas las bibliotecas del Runtime A al Runtime B, incluyendo tanto los tiempos públicos como los personalizados. Si las versiones de Python y R permanecen igual, las librerías funcionan correctamente. Sin embargo, en el caso de los JAR, hay una posibilidad significativa de que no funcionen debido a cambios en dependencias y otros factores como cambios en Scala, Java, Spark y el sistema operativo.

Eres responsable de actualizar o reemplazar cualquier librería que no funcione con Runtime B. Si hay un conflicto, lo que significa que el Tiempo B incluye una biblioteca originalmente definida en el Tiempo A, el sistema de gestión de bibliotecas intenta crear la dependencia necesaria para el Tiempo B según tus configuraciones. Sin embargo, se produce un error en el proceso de creación si se produce un conflicto. En el registro de errores, puedes ver qué librerías causan conflictos y hacer ajustes en sus versiones o especificaciones.

Cambio en tiempo de ejecución de administración de bibliotecas.

Actualizar el protocolo Delta Lake

Las características de Delta Lake siempre son retrocompatibles, asegurando que las tablas creadas en una versión inferior de Delta Lake puedan interactuar sin problemas con versiones superiores. Sin embargo, cuando activas ciertas funciones (por ejemplo, usando el delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) método), podrías comprometer la compatibilidad hacia adelante con versiones inferiores de Delta Lake. En tales casos, necesitas modificar las cargas de trabajo que hacen referencia a las tablas actualizadas para alinearlas con una versión de Delta Lake que mantenga la compatibilidad.

Cada tabla Delta está asociada a una especificación de protocolo, que define las características que soporta. Las aplicaciones que interactúan con la tabla, ya sea para leer o escribir, dependen de esta especificación de protocolo para determinar si son compatibles con el conjunto de características de la tabla. Si una aplicación no tiene la capacidad de manejar una característica indicada como soportada en el protocolo de la tabla, no puede leer ni escribir en esa tabla.

La especificación del protocolo se divide en dos componentes distintos: el protocolo "read" y el protocolo "write". Para más información, consulta ¿Cómo gestiona Delta Lake la compatibilidad de características?

GIF que muestra la advertencia inmediata cuando se usa el método upgradeTableProtocol.

Puedes ejecutar el comando delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) en el entorno PySpark, y en Spark SQL y Scala. Este comando inicia una actualización en la tabla Delta.

Cuando realizas esta actualización, recibes una advertencia de que actualizar la versión del protocolo Delta es un proceso irreversible. Este proceso significa que, una vez que ejecutas la actualización, no puedes deshacerla.

Las actualizaciones de la versión del protocolo pueden afectar potencialmente a la compatibilidad de los lectores de tablas, escritores o ambos existentes de Delta Lake. Por lo tanto, procede con precaución y actualiza la versión del protocolo solo cuando sea necesario, como al adoptar nuevas funciones en Delta Lake.

Importante

Para saber más sobre qué versiones y características de protocolo son compatibles en todas las experiencias de Fabric, consulta la interoperabilidad del formato de tabla Delta Lake.

Captura de pantalla que muestra la advertencia al actualizar el protocolo Delta Lake.

Además, verifica que todas las cargas de trabajo y procesos de producción actuales y futuros sean compatibles con las tablas Delta Lake utilizando la nueva versión del protocolo para garantizar una transición fluida y evitar posibles interrupciones.