Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describen los cambios necesarios para adaptar las cargas de trabajo de Apache Spark existentes para que se ejecuten en Azure Databricks. Tanto si va a Azure Databricks desde un clúster local, una infraestructura personalizada basada en la nube u otra oferta empresarial de Apache Spark, la mayoría de las cargas de trabajo solo requieren algunos cambios para entrar en producción. Azure Databricks amplía, simplifica y mejora el rendimiento de Apache Spark mediante la introducción de optimizaciones personalizadas, la configuración e implementación de la infraestructura y el mantenimiento de dependencias en Databricks Runtime.
Importante
Al actualizar las versiones de Apache Spark, es posible que haya cambios importantes en la sintaxis. Consulte las notas de la versión de Databricks Runtime sobre versiones y compatibilidad y la guía de migración de Spark.
Cambio de parquet a delta
Databricks recomienda usar Delta Lake en lugar de ORC o Parquet al escribir datos. Azure Databricks ha optimizado muchas características para mejorar la eficacia al interactuar con tablas respaldadas por Delta Lake, y la actualización de datos y código de Parquet a Delta Lake solo lleva unos pocos pasos. Consulte Migración de un lago de datos de Parquet a Delta Lake.
Dado que Delta Lake ofrece garantías de transacción ACID, es posible que pueda simplificar las cargas de trabajo para quitar soluciones alternativas orientadas a la creación de una seudotransaccionalidad en las operaciones de Apache Spark. Algunos ejemplos son:
- Crear una estructura de directorios o una estrategia de creación de particiones que permita que todos los archivos de una operación determinada se detecten simultáneamente como parte de una partición.
- Configurar o usar el metastore para agregar transaccionalidad a la detección de datos nuevos.
- Usar
MSCK repairpara registrar archivos escritos en una tabla en el metastore. - Usar
alter table add partitionpara agregar manualmente particiones a una tabla.
Consulte Cuándo particionar tablas en Azure Databricks.
Nota:
Puede ejecutar cargas de trabajo sin actualizar los formatos de datos usados, pero muchas de las mayores mejoras de rendimiento en Azure Databricks están vinculadas directamente a Delta Lake.
Recompilación del código de Apache Spark con bibliotecas compatibles con Databricks Runtime
Cada versión de Databricks Runtime viene preconfigurada con muchas de las bibliotecas que se necesitan en las aplicaciones de Apache Spark. Puede instalar bibliotecas adicionales en el proceso según sea necesario, pero siempre que sea posible, Databricks recomienda usar versiones de biblioteca empaquetadas en Databricks Runtime que se prueban para la compatibilidad. Cada versión de Databricks Runtime incluye una lista de todas las bibliotecas instaladas. Consulta las notas de la versión y la compatibilidad de Databricks Runtime.
Eliminación de comandos de creación de SparkSession
Muchas cargas de trabajo de Apache Spark heredadas declaran explícitamente una sesión SparkSession nueva para cada trabajo. Azure Databricks crea automáticamente un SparkContext para cada clúster de proceso y crea una SparkSession aislada para cada cuaderno o trabajo ejecutado en el clúster. Puede mantener la capacidad de compilar y probar código localmente y, a continuación, implementarlo en Azure Databricks actualizando estos comandos para usar SparkSession.builder().getOrCreate().
Eliminar comandos de script de terminal
Apache Spark requiere que los programas declaren explícitamente que están completos mediante comandos como sys.exit() o sc.stop(). Azure Databricks finaliza y limpia automáticamente los trabajos a medida que llegan a la finalización, por lo que estos comandos no son necesarios y deben quitarse.
Azure Databricks también finaliza y limpia automáticamente las cargas de trabajo de Structured Streaming al finalizar la ejecución, por lo que puede quitar awaitTermination() y comandos similares de las aplicaciones structured Streaming. Consulte Cuándo usar awaitTermination().
Confía en Azure Databricks para configurar tu clúster
Azure Databricks configura todas las opciones para el controlador y ejecutores del clúster de proceso automáticamente para maximizar la resistencia y el uso de recursos. Proporcionar configuraciones personalizadas para los ejecutores o JVM puede dar lugar a una reducción del rendimiento. Databricks recomienda establecer solo las configuraciones de Spark necesarias para controlar el control de tipos o las funciones de manera que la lógica siga siendo coherente.
Ejecución de las cargas de trabajo
Ahora que ha quitado patrones, comandos y configuraciones que podrían interferir con la ejecución de Azure Databricks, puede ejecutar las cargas de trabajo en un entorno de prueba y comparar el rendimiento y los resultados con la infraestructura heredada. Aunque es posible que muchos de los conocimientos que su equipo haya desarrollado para solucionar problemas y mejorar el rendimiento de las cargas de trabajo de Apache Spark todavía se pueden aprovechar en Azure Databricks, con más frecuencia puede ver mayores beneficios de los pasos de actualización para usar nuevas características en los productos de Apache Spark, Delta Lake o Azure Databricks personalizados.