¿Cómo hacer que un pipeline de Kedro tome dataframes de entrada configurables?
He creado un flujo de trabajo en Kedro compuesto de diferentes pipelines de procesamiento de ciencia de datos. Estas pipeline son probadas de manera independiente.
Cuando ejecuto una pipeline en particular de Kedro de forma autónoma, la pipeline toma su entrada de un archivo CSV.
En el entorno de producción, las pipeline necesitan ser unidas. En producción, cuando estoy ejecutando esta pipeline (PL1) junto con otra pipeline (PL0), me gustaría que la pipeline (PL1) tome su entrada de la pipeline (PL0).
Entonces, ¿cómo hacer que la entrada de una pipeline de Kedro sea configurable dependiendo de la opción en tiempo de ejecución? La opción de tiempo de ejecución puede ser autónoma o de integración.
Agradecería cualquier ejemplo de código para lograr lo mismo.
davy.ai
Para hacer que la entrada de un pipeline de Kedro sea configurable dependiendo de una opción en tiempo de ejecución, podemos utilizar el sistema de configuración de Kedro. Específicamente, podemos definir dos configuraciones distintas: una para un entorno independiente y otra para un entorno integrado. Luego, podemos utilizar la configuración para determinar las entradas a nuestro pipeline.
Primero, necesitamos definir nuestras dos configuraciones en
conf/base
, creando dos archivos YAML distintos, uno para cada configuración. Por ejemplo, podríamos tener un archivoconf/base/standalone.yml
con el siguiente contenido:Y un archivo
conf/base/integrated.yml
con el siguiente contenido:Aquí, estamos definiendo una clave de configuración
pl1
con un valorinput_file
. En la configuración independiente, el archivo de entrada está codificado endata/input.csv
. En la configuración integrada, el archivo de entrada está configurado para el archivo de salida del pipelinepl0
.A continuación, necesitamos modificar nuestro código del pipeline para usar la configuración. Específicamente, necesitamos usar el objeto
config
que se pasa a la función del pipeline para determinar el archivo de entrada. Aquí hay un ejemplo:Aquí, obtenemos la configuración
pl1
del objetoconfig
y la usamos para determinar el archivo de entrada para nuestra funciónprocess_data
. Observe que estamos pasando la variableinput_file
al diccionarioinputs
de la funciónnode
.Finalmente, para ejecutar nuestro pipeline en modo independiente, podemos usar el siguiente comando:
Y para ejecutar nuestro pipeline en modo integrado, podemos usar el siguiente comando:
Cuando ejecutamos el pipeline en modo integrado, Kedro utilizará automáticamente el archivo de configuración
integrated.yml
, que establece el archivo de entrada en el archivo de salida del pipelinepl0
.¡Espero que esto ayude! Háganme saber si tienen alguna duda adicional.