
DENG-256: Optimización de aplicaciones Apache Spark
Este curso práctico proporciona los conceptos clave y la experiencia que los desarrolladores necesitan para mejorar el rendimiento de sus aplicaciones Apache Spark. Durante el curso, los participantes aprenderán a identificar las causas comunes de bajo rendimiento en aplicaciones Spark, técnicas para evitarlas o solucionarlas, y las mejores prácticas para la monitorización de aplicaciones Spark. El curso "Ajuste del Rendimiento de Aplicaciones Apache Spark" presenta la arquitectura y los conceptos detrás de Apache Spark y la plataforma de datos subyacente. Posteriormente, se basa en esta comprensión fundamental enseñando a los estudiantes a ajustar el código de la aplicación Spark. El formato del curso se centra en demostraciones dirigidas por el instructor que ilustran tanto los problemas de rendimiento como las técnicas para solucionarlos, seguidas de ejercicios prácticos que brindan a los estudiantes la oportunidad de practicar lo aprendido a través de un entorno de cuaderno interactivo. El curso se aplica a Spark 2.4, pero también introduce el marco de Ejecución de Consultas Adaptativas Spark 3.0.
Los estudiantes que completen este curso con éxito podrán: Comprender la arquitectura de Apache Spark, la ejecución de trabajos y cómo técnicas como la ejecución diferida y la canalización pueden mejorar el rendimiento en tiempo de ejecución. Evaluar las características de rendimiento de las estructuras de datos centrales como RDD y DataFrames. Seleccionar los formatos de archivo que proporcionarán el mejor rendimiento para su aplicación. Identificar y resolver problemas de rendimiento causados por la desviación de datos. Utilizar optimizaciones de particionamiento, agrupamiento y unión para mejorar el rendimiento de SparkSQL. Comprender la sobrecarga de rendimiento de los RDD, DataFrames y funciones definidas por el usuario basados en Python. Aprovechar el almacenamiento en caché para un mejor rendimiento de la aplicación. Comprender cómo funcionan los optimizadores Catalyst y Tungsten. Comprender cómo Workload XM puede ayudar a solucionar problemas y supervisar de forma proactiva el rendimiento de las aplicaciones Spark. Conocer las nuevas características de Spark 3.0 y, específicamente, cómo el motor de ejecución de consultas adaptativas mejora el rendimiento.
Arquitectura de Spark RDDs DataFrames y conjuntos de datos Evaluación diferida Canalización Fuentes y formatos de datos Resumen de formatos disponibles Impacto en el rendimiento El problema de los archivos pequeños Inferencia de esquemas El coste de la inferencia Tácticas de mitigación Manejo de datos sesgados Reconocimiento de sesgos Tácticas de mitigación Descripción general de Catalyst y Tungsten Descripción general de Catalyst Descripción general de Tungsten Mitigación de Spark Mezclas Desnormalización Uniones de difusión Operaciones del lado del mapa Uniones de combinación de ordenamiento Tablas particionadas y en contenedores Tablas particionadas Tablas en contenedores Impacto en el rendimiento Mejora del rendimiento de las uniones Uniones sesgadas Uniones en contenedores Uniones incrementales PySpark Sobrecarga y UDF PySpark Sobrecarga UDF escalares UDF vectoriales con Apache Arrow UDF de Scala Almacenamiento en caché de datos para su reutilización Almacenamiento en caché Opciones | Impacto en el rendimiento | Problemas del almacenamiento en caché | Introducción a Workload XM (WXM) | Descripción general de WXM | WXM para desarrolladores de Spark | Novedades de Spark 3.0 | Número adaptable de particiones aleatorias | Uniones sesgadas | Convertir uniones de ordenación y fusión en uniones de difusión | Poda dinámica de particiones | Particiones aleatorias con coalescencia dinámica
Este curso está diseñado para desarrolladores de software, ingenieros y científicos de datos con experiencia en el desarrollo de aplicaciones Spark que deseen aprender a mejorar el rendimiento de su código. No se trata de una introducción a Spark. Los ejemplos y ejercicios prácticos de Spark se presentan en Python, y se requiere la capacidad de programar en este lenguaje. Se asume un conocimiento básico de la línea de comandos Linux. Es útil tener conocimientos básicos de SQL.



