Programación de cuadernos Jupyter en Meta

Blog

HogarHogar / Blog / Programación de cuadernos Jupyter en Meta

Jul 21, 2023

Programación de cuadernos Jupyter en Meta

En Meta, Bento es nuestra plataforma interna de portátiles Jupyter que utilizan muchos usuarios internos. Los cuadernos también se utilizan ampliamente para crear informes y flujos de trabajo (por ejemplo, realizar

En Meta, Bento es nuestra plataforma interna de portátiles Jupyter que utilizan muchos usuarios internos. Los cuadernos también se utilizan ampliamente para crear informes y flujos de trabajo (por ejemplo, realizar ETL de datos) que deben repetirse en ciertos intervalos. Los usuarios con este tipo de notebooks tendrían que recordar ejecutar manualmente sus notebooks con la cadencia requerida, un proceso que la gente podría olvidar porque no se adapta a la cantidad de notebooks utilizados.

Para abordar este problema, invertimos en la construcción de una infraestructura de portátiles programados que encaja perfectamente con el resto de las herramientas internas disponibles en Meta. Invertir en infraestructura ayuda a garantizar que la privacidad sea inherente a todo lo que construimos. Nos permite seguir creando soluciones innovadoras y valiosas de forma segura para la privacidad.

La capacidad de responder de forma transparente preguntas sobre el flujo de datos a través de los metasistemas con fines de privacidad de datos y cumplimiento de las regulaciones diferencia nuestra implementación programada de portátiles del resto de la industria.

En esta publicación, explicaremos cómo unimos a Bento con nuestro marco de canalización ETL por lotes llamado Dataswarm (piense en Apache Airflow) de una manera consciente de la privacidad y el linaje.

En Meta, estamos comprometidos a mejorar la confianza en la producción mediante la realización de análisis estáticos de artefactos programados y el mantenimiento de narrativas coherentes en torno a los flujos de datos aprovechando los operadores transparentes de Dataswarm y las anotaciones de datos. Los cuadernos plantean un desafío especial porque:

Estas tres consideraciones moldearon e influyeron en nuestras decisiones de diseño. En particular, limitamos los cuadernos que se pueden programar para quienes realizan principalmente ETL y quienes realizan transformaciones de datos y muestran visualizaciones. Los portátiles con otros efectos secundarios están actualmente fuera del alcance y no son elegibles para ser programados.

Hay tres componentes principales para admitir cuadernos programados:

Para abordar la mayoría de las preocupaciones destacadas anteriormente, realizamos el estado de ejecución del cuaderno en un contenedor sin acceso a la red. También aprovechamos las anotaciones de datos de entrada y salida para mostrar el flujo de datos.

Para ETL, recuperamos datos y los escribimos de una manera novedosa:

Hemos integrado BentoOperator dentro del marco de propósito de datos de Meta para garantizar que los datos se utilicen únicamente para el propósito para el que fueron previstos. Este marco garantiza que se respete el propósito de uso de los datos a medida que los datos fluyen y se transmutan a través de la pila de Meta. Como parte de la programación de un cuaderno, el usuario proporciona una "zona de política de propósito" que sirve como punto de integración con el marco de propósito de los datos.

Exploremos ahora el flujo de trabajo para programar un cuaderno:

Hemos expuesto el punto de entrada de la programación directamente desde el encabezado del cuaderno, por lo que todo lo que los usuarios deben hacer es presionar un botón para comenzar.

El primer paso en el flujo de trabajo es configurar algunos parámetros que se utilizarán para generar automáticamente la canalización para la programación.

El siguiente paso consiste en obtener una vista previa de la canalización generada antes de crear una diferencia de Phabricator (la herramienta de revisión de diferencias de Meta).

Además del código de canalización para ejecutar el portátil, el propio portátil también se registra en el control de código fuente para que pueda revisarse. Los resultados de intentar ejecutar la computadora portátil en una configuración programada también se incluyen en el plan de prueba.

Una vez que se ha revisado y aterrizado la diferencia, el cronograma comienza a ejecutarse al día siguiente. En caso de que la ejecución del cuaderno falle por cualquier motivo, se notifica automáticamente al propietario de la programación. También hemos creado una extensión de panel contextual directamente en Bento para ayudar con la depuración de ejecuciones del cuaderno.

Si bien hemos abordado el desafío de admitir portátiles programados teniendo en cuenta la privacidad, los portátiles que están dentro del alcance de la programación se limitan a aquellos que realizan ETL o análisis de datos sin otros efectos secundarios. Esto es sólo una fracción de los portátiles que los usuarios desean programar eventualmente. Para aumentar la cantidad de casos de uso, invertiremos en admitir otras fuentes de datos transparentes además de la celda SQL.

También hemos comenzado a trabajar para admitir portátiles parametrizados en una configuración programada. La idea es admitir instancias en las que, en lugar de registrar muchos cuadernos en el control de fuente que solo difieren en unas pocas variables, simplemente registramos un cuaderno e inyectamos los parámetros diferenciadores durante el tiempo de ejecución.

Por último, trabajaremos en la programación basada en eventos (además del enfoque basado en tiempo que tenemos aquí) para que un cuaderno programado también pueda esperar eventos predefinidos antes de ejecutarse. Esto incluiría, por ejemplo, la capacidad de esperar hasta que todas las fuentes de datos de las que depende el cuaderno lleguen antes de que pueda comenzar la ejecución del cuaderno.

Algunos de los enfoques que adoptamos se inspiraron directamente en el trabajo realizado en Papermill.