en el meta, bento este es nuestro interior Júpiter Plataforma portátil utilizada por muchos usuarios internos. Las computadoras portátiles también se usan ampliamente para generar informes y flujos de trabajo (por ejemplo, realizar datos ETL), que debe repetirse a intervalos regulares. Los usuarios de estas computadoras portátiles deberán recordar iniciar manualmente sus computadoras portátiles con la frecuencia requerida, un proceso que las personas pueden olvidar porque no se adapta a la cantidad de computadoras portátiles que usan.
Para abordar este problema, hemos invertido en una infraestructura portátil planificada que encaja perfectamente con el resto de las herramientas internas disponibles en Meta. Invertir en infraestructura ayuda a mantener privado todo lo que creamos. Esto nos permite continuar creando soluciones innovadoras y de valor agregado respetando la privacidad.
La capacidad de responder de forma transparente preguntas sobre el flujo de datos a través de metasistemas con fines de cumplimiento y privacidad de datos distingue nuestra introducción planificada de portátiles del resto de la industria.
En esta publicación, explicaremos cómo combinamos Bento con nuestro marco de canalización por lotes ETL llamado enjambre de datos (pensar Flujo de aire Apache) con confidencialidad y origen.
Problema al crear cuadernos programados en Meta
En Meta, nos esforzamos por aumentar la confianza en la producción realizando análisis estático sobre artefactos planificados y manteniendo una narrativa de flujo de datos coherente mediante el uso de información transparente. Operadores de enjambre de datos y anotaciones de datos. Las computadoras portátiles presentan un desafío particular porque:
- Debido al contenido dinámico del código (por ejemplo, nombres de tablas creados con cadenas f), el análisis estático no funcionará, lo que dificulta la comprensión del origen de los datos.
- Debido a que los cuadernos pueden tener cualquier código arbitrario, su ejecución en producción se considera «opaca» porque el origen de los datos no se puede determinar, verificar ni registrar.
- Se cree que las computadoras portátiles planeadas se encuentran en el lado de fabricación de la barrera de producción y desarrollo. Antes de que algo entre en producción, es necesario validarlo, y validar el código del cuaderno no es una tarea trivial.
Estas tres consideraciones han dado forma e influido en nuestras decisiones de diseño. Específicamente, hemos limitado los cuadernos que se pueden programar solo a aquellos que realizan principalmente ETL, así como a aquellos que realizan transformaciones de datos y muestran visualizaciones. Las computadoras portátiles con otros efectos secundarios no se consideran actualmente y no son elegibles para su inclusión en el programa.
Cómo funcionan los cuadernos programados en Meta
Hay tres componentes principales para admitir cuadernos programados:
- Una interfaz de usuario para programar y crear diferencias (el metaequivalente de una solicitud de extracción) que se debe ver antes de que el cuaderno y su canalización DataSwarm asociada se registren en el control de fuente.
- Interfaz de depuración después de programar el cuaderno.
- Punto de integración (individual Operador) con el programador interno de Meta para iniciar la computadora portátil. Lo llamamos: Operador Bento.
Cómo funciona BentoOperator
Para resolver la mayoría de los problemas mencionados anteriormente, ejecutar el estado de ejecución del bloc de notas en un contenedor sin acceso a la red. También usamos entrada & salida anotaciones de datos para mostrar el flujo de datos.
Diseño general de BentoOperator.
Para ETL, extraemos los datos y los escribimos de una nueva forma:
- Los cuadernos compatibles obtienen datos de forma estructurada utilizando celdas personalizadas que hemos creado. Un ejemplo de esto es una celda SQL. Cuando Operador Bento El primer paso implica analizar los metadatos asociados con estas celdas, recuperar los datos mediante declaraciones transparentes de Dataswarm y almacenarlos en archivos csv locales en hosts remotos temporales.
- Las instancias de estas celdas personalizadas luego se reemplazan por una llamada pandas.read_csv() cargue estos datos en el Bloc de notas, desbloqueando la capacidad de ejecutar el Bloc de notas sin acceso a la red.
- Al escribir datos también se utiliza una celda personalizada, que reemplazamos con una llamada pandas.DataFrame.to_csv() guardado en un archivo CSV local, que luego procesamos una vez completada la ejecución real del bloc de notas y cargamos los datos en el almacenamiento mediante declaraciones transparentes de Dataswarm.
- Después de este paso, el recolector de basura elimina los archivos CSV temporales; la versión resultante del cuaderno con la salida cargada y el host de ejecución temporal liberado.
La celda SQL personalizada es compatible con los cuadernos programados.
Celda personalizada estructurada para carga de datos.
Nuestro enfoque hacia la privacidad con BentoOperator
nos hemos integrado Operador Bento dentro de la estructura de destino de los metadatos para garantizar que los datos solo se utilicen para el propósito para el que fueron destinados. Esta estructura garantiza que se cumpla el propósito de utilizar los datos a medida que los datos se pasan y se convierten en la metapila. Como parte de la programación del cuaderno, el usuario proporciona una «zona de política de destino» que sirve como punto de integración con la estructura de datos de destino.
Flujo de trabajo general del usuario
Repasemos ahora el flujo de trabajo de planificación del cuaderno:
Hemos colocado el punto de entrada de programación directamente desde el encabezado del cuaderno, de modo que todo lo que los usuarios tienen que hacer es hacer clic en un botón para comenzar.
El primer paso en el flujo de trabajo es configurar algunas de las configuraciones que se utilizarán para crear automáticamente la canalización para la programación.
El siguiente paso incluye obtener una vista previa de la canalización generada antes fabricante (Herramienta de visor de meta diferencias) Diferencia creada.
Además del código de canalización para ejecutar el cuaderno, el cuaderno en sí también se registra en el control de código fuente para que pueda verse. Los resultados de intentar ejecutar la computadora portátil en la configuración programada también se incluyen en el plan de prueba.
Una vez revisada y recibida la diferencia, el horario entrará en vigor al día siguiente. Si la ejecución del cuaderno falla por algún motivo, se notifica automáticamente al propietario de la programación. También creamos una extensión de barra contextual directamente en Bento para facilitar la depuración de los inicios de portátiles.
¿Qué pasará con los cuadernos previstos?
Aunque hemos abordado la cuestión de admitir portátiles programados teniendo en cuenta la privacidad, los portátiles sujetos a programación se limitan a aquellos que realizan ETL o aquellos que realizan análisis de datos sin ningún otro efecto secundario. Estos son sólo algunos de los cuadernos 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 en la compatibilidad con portátiles parametrizados como parte de una configuración planificada. La idea es apoyar casos donde en lugar de registrarse mucho Cuadernos para el control de código fuente que difieren solo en unas pocas variables; en lugar de eso, simplemente verificamos un cuaderno e introducimos parámetros diferenciadores en tiempo de ejecución.
Finalmente, trabajaremos en la programación basada en eventos (además del enfoque basado en el tiempo que estamos viendo aquí) para que el cuaderno programado también pueda esperar eventos predefinidos antes de ejecutarse. Esto podría incluir, por ejemplo, la capacidad de esperar hasta que se encuentren todos los orígenes de datos de los que el cuaderno no depende antes de que el cuaderno pueda comenzar a ejecutarse.
Gracias
Algunos de los enfoques que hemos adoptado se han inspirado directamente en el trabajo realizado en Fábrica de papel.