Interno destacado: James Rowan

26 de agosto de 2015 | Por

fotografía de James RowanMi nombre es James Rowan y soy un estudiante de tercer año en ascenso que estudia matemáticas en el MIT. Pasé el verano trabajando como pasante en el equipo de análisis de edX, centrándome en la tubería de datos. El equipo de análisis proporciona datos y métricas para que los utilicen los equipos del curso, los investigadores y los equipos internos de edX. Mi trabajo este verano se centró en mejorar nuestro almacén de datos, una base de datos de HP Vertica utilizada para generar informes internos para los equipos ejecutivos y de marketing.

Ampliación del almacén de datos

mi primer proyecto fue agregar información sobre las áreas temáticas del curso al almacén de datos. Si bien el esquema de almacén inicial permitía a los analistas consultar las métricas de inscripción y actividad curso por curso, no había forma de agregar y comparar cursos por área temática. Tener información del área temática del curso en el almacén permitiría al equipo de marketing ver qué áreas temáticas tienen las tasas más altas de obtención de certificados verificados, por ejemplo, mientras que otros analistas podrían preguntar sobre los patrones de participación por área temática (¿los cursos de matemáticas tienden a ver muchos estudiantes que intentan resolver problemas, mientras que los cursos de humanidades presentan un mayor uso de foros de discusión?).

Para realizar esta tarea, primero necesitaba aprender sobre Luigi, el marco de procesamiento de datos que utiliza la canalización de Open edX. Luigi es un marco de procesamiento de datos Python de código abierto desarrollado por Spotify que divide los flujos de trabajo de procesamiento de datos en una serie de tareas, cada una con su propio resultado, de modo que se simplifica el manejo de dependencias y los flujos de trabajo se pueden reiniciar después de que fallan los pasos intermedios. Esta propiedad de Luigi nos lleva a buscar flujos de trabajo lo más modulares posible.

El flujo de trabajo de las áreas temáticas del curso consta de tres partes:

  1. Llama a el catálogo de cursos api, que contiene una lista de todos los cursos comercializados en el sitio, junto con información como sus temas, instructores y duración.
  2. Analice la salida de la API en un archivo de valores separados por tabuladores, con cada fila que contiene una identificación de curso, un área temática para el curso y alguna información adicional.
  3. Cargue los datos de esta área temática en la base de datos de Vertica.

Las tres fases distintas de este proceso que identifiqué anteriormente se tradujeron naturalmente en tareas de Luigi, y las dos primeras fueron bastante sencillas de escribir. El tercero fue más interesante. Si bien Luigi tiene tareas preconstruidas para cargar en bases de datos MySQL, no había una tarea de carga de Vertica preconstruida, por lo que primero tuve que crear una tarea general de Luigi de carga masiva de Vertica. Este cargador masivo general fue utilizado por otros miembros del equipo durante el transcurso del verano, y disfruté tener la propiedad de esta parte de la tubería, que proporcionará la infraestructura para futuros flujos de trabajo para expandir aún más nuestro almacén de análisis interno.

El siguiente gráfico muestra un ejemplo de una pregunta que los analistas ahora pueden responder gracias a este proyecto. Muestra qué porcentaje de los alumnos activos en cursos en edx.org estaban activos en cursos de áreas temáticas particulares. En el otoño de 2014, alrededor del diez por ciento de los estudiantes activos estaban activos en cursos de informática, negocios, análisis de datos y humanidades. Sin embargo, en 2015, una fracción mucho mayor de los estudiantes activos en cursos en edx.org tenían actividad en cursos de informática. ¡En junio de 2015, casi la mitad de todos los estudiantes activos en edx.org estaban activos en un curso de informática! Las otras tres áreas temáticas que se muestran también experimentaron una mayor popularidad entre los usuarios activos, llegando al veinte por ciento cada una.

Fracción de estudiantes activos activos en materias a lo largo del tiempo; muestra un aumento en la popularidad de los cursos de Ciencias de la Computación, Negocios y Administración, Análisis de Datos y Estadísticas y Humanidades.

Después del proyecto de áreas temáticas, trabajé en una función experimental para análisis de productos. Todas las interacciones de los usuarios con la plataforma, desde la reproducción de videos hasta la resolución de problemas y la edición de perfiles de usuario, se registran para su análisis. Si se agrega una nueva función y comienza a emitir eventos, es posible que el equipo del producto desee saber con qué frecuencia se usa o si ve un uso desproporcionadamente alto en los navegadores de escritorio (lo que sugiere un problema con la compatibilidad móvil). En lugar de tener que esperar a que el equipo de análisis cree un flujo de trabajo de canalización para agregar información de registro de seguimiento sobre la nueva función, el producto y otros equipos deberían poder realizar un análisis preliminar de los registros de eventos.

La dificultad de consultar directamente los registros de eventos es que los registros de eventos están semiestructurados y se almacenan en formato JSON. Dado que los diferentes tipos de eventos tienen diferentes atributos, sería difícil de manejar tratar de hacer un esquema de tabla único para los eventos; en cambio, aproveché Las mesas flexibles de Vertica y eligió un esquema de tabla que tiene columnas materializadas (columnas de tabla SQL de primera clase) para los campos comunes a todos o casi todos los eventos (cosas como nombre de usuario, marca de tiempo y tipo de dispositivo de usuario) mientras permite a los usuarios consultar campos específicos de eventos (cosas como qué marca de tiempo dentro de un video al que alguien está navegando). Si bien no estamos seguros de si este será nuestro marco para el análisis de productos en el futuro, nos ayudó a explorar las capacidades de nuestro almacén.

Integración del procesamiento de datos de BI en la canalización

Cuando comencé a trabajar en edX este verano, teníamos básicamente dos canalizaciones separadas: una para los datos orientados al instructor que se usan en Insights (Abra el panel de análisis de edX) y otra para nuestros propios informes internos de inteligencia empresarial (BI). La canalización para datos orientados al exterior está escrita en Luigi y presenta trabajos de Hadoop por lotes para llenar un almacén de resultados para el API de datos, mientras que la canalización para informes internos utiliza Pentaho Data Integration para extraer datos del LMS y almacenar resultados, transformarlos y cargarlos en el almacén. La canalización de BI dependía de algunos resultados de la canalización principal, pero no podía comunicarle estas dependencias, lo que obligó al equipo a cronometrar cuidadosamente la ejecución de las tareas en nuestro servidor de compilación Jenkins y anuló el propósito de usar Luigi para el manejo de dependencias en primer lugar. .

Arquitecturas existentes: BI interna frente a perspectivas externas Open Pipeline: del repositorio edx/edx-analytics-pipeline. Muestra cómo la ruta de datos para el análisis interno está completamente separada de la ruta de datos para el análisis externo.

La antigua arquitectura de canalización de análisis, con dos rutas separadas de flujo de datos.

Para reducir la deuda técnica inherente al mantenimiento de dos sistemas, se me encargó comenzando la transición de las tareas de Pentaho a las tareas de Luigi. Además de los claros beneficios de la transición a un único marco de procesamiento de datos, este compromiso también allana el camino para futuras mejoras en el almacenamiento de datos. Dado que, en esta nueva arquitectura, toda la escritura en el almacén se realiza a través de la canalización, las nuevas tareas de procesamiento de datos (como la tarea de las áreas temáticas de mi curso anterior) podrán escribir en el almacén sin tener que programarse manualmente en torno a la carga de datos de Pentaho. pasos. Un flujo de trabajo de procesamiento de datos unificado también facilitará la validación de datos; las tareas de validación de datos podrían integrarse dentro de los pasos de procesamiento simplemente agregando tareas de Luigi en la canalización unificada.

Marco de informes, v1: comenzar a integrar entornos. Muestra cómo el sistema de análisis interno se conecta a la canalización externa.

La arquitectura de análisis interno (BI) después del retiro de Pentaho está completa.

 

Este proyecto me permitió trabajar con la pila tecnológica completa del oleoducto. Tuve la oportunidad de escribir tareas que interactúan con las bases de datos MySQL LMS, los registros de seguimiento de eventos, el almacén de resultados intermedios de Apache Hive y el almacén de productos de datos de Vertica terminado, y fue un buen uso culminante de las habilidades que había adquirido durante el curso del verano.

Conclusión

Disfruté tener la oportunidad de trabajar en edX este verano. Esta pasantía me enseñó una serie de habilidades técnicas (el marco Luigi, el paradigma MapReduce, SQL, git), y estar en el equipo de análisis también me permitió obtener experiencia de primera mano con el diseño de arquitecturas de procesamiento de datos, el mantenimiento de grandes bases de código, y el ciclo de desarrollo de software y productos de datos. Aprender a trabajar en el contexto de un equipo ágil también es una habilidad ampliamente aplicable y me ha llevado a pensar más conscientemente sobre la dinámica de grupo y la gestión de proyectos en entornos no laborales.  

Quisiera agradecer a John Baker, Gabe Mulley y Brian Wilson por ayudarme con las preguntas técnicas sobre la canalización, al resto del equipo de análisis por brindar un excelente entorno de trabajo y a todos los demás en edX por hacer que este verano sea divertido.

Carga

¿Necesita más tiempo? Eche un vistazo a los artículos a continuación.

Resolviendo problemas juntos: Desarrollo de plataformas impulsado por la comunidad
Desarrolla tus habilidades y escala el futuro en la Conferencia Open edX.
Talleres para desarrolladores de la conferencia Open edX
Recuperando nuestro futuro digital: Por qué me uní al grupo Open Renaissance
¡Únete a la Conferencia Open edX 2026!

La Conferencia Open edX 2026 presentará casos de uso innovadores para uno de los mejores sistemas de gestión de aprendizaje en línea de código abierto del mundo, la plataforma Open edX, y descubrirá los últimos avances en diseño instruccional, constelación de cursos y métodos para operar y ampliar la plataforma Open edX. , incluidas tecnologías innovadoras, como la IA generativa.