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 que se necesitan para adaptar las cargas de trabajo de Apache Spark existentes para que se ejecuten en Azure Databricks. Tanto si va a migrar 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 versiones y compatibilidad de las notas de la versión de Databricks Runtime 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 implica 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 repair
para registrar archivos escritos en una tabla en el metastore. - Usar
alter table add partition
para agregar manualmente particiones a una tabla.
Consulte Cuándo crear particiones de tablas en Azure Databricks.
Nota:
Puede ejecutar cargas de trabajo sin actualizar los formatos de datos usados, pero muchas de las principales 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. Ver las notas de la versión de Databricks Runtime versiones y compatibilidad.
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 sesión SparkSession aislada para cada cuaderno o trabajo que se ejecuta en el clúster. Puede mantener la capacidad de compilar y probar código localmente y, luego, implementarlo en Azure Databricks mediante la actualización de estos comandos para usar SparkSession.builder().getOrCreate()
.
Eliminación de 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 se completan, por lo que estos comandos no son necesarios y se deben quitar.
Azure Databricks también finaliza y limpia automáticamente las cargas de trabajo de Structured Streaming cuando terminan de ejecutarse, por lo que puede quitar awaitTermination()
y comandos similares de las aplicaciones de Structured Streaming.
Seguridad de que Azure Databricks configurará el clúster
Azure Databricks configura todas las opciones del controlador y los ejecutores en el clúster de proceso de manera automática para maximizar la resistencia y el uso de los 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. Si bien es posible que muchas de las aptitudes que haya desarrollado el equipo para solucionar problemas y mejorar el rendimiento de las cargas de trabajo de Apache Spark de todos modos se pueden aprovechar en Azure Databricks, podría ver mayores ganancias si actualiza los pasos para usar características nuevas en Azure Spark, Delta Lake o productos de Azure Databricks personalizados.