Dans ce Tutoriel, vous allez apprendre à développer un artefact custom pour réaliser un traitement simple.
Un artefact custom peut être réalisé dans n’importe quel langage et mettre en oeuvre un traitement ou procéder à un chargement spécifique de données. Dans cet exemple, nous allons réaliser le calcul de la suite de fibonacci en python.
On download un wrapper pour envoyer les logs vers l’API de Logs de DataTask, et on fait très simplement appel au script python.
FROM python:3.9.6-slim-buster
RUN apt-get update && \\
apt-get install -y curl
# Copy scripts
COPY fibo.py /fibonacci/
# Download logger binary file
RUN curl <https://storage.googleapis.com/datatask-public-packages/log-streamer> --output /fibonacci/log-streamer
RUN chmod +x /fibonacci/log-streamer
CMD ["/fibonacci/log-streamer", "python", "/fibonacci/fibo.py"]
Dans ce script on récupère le terme à calculer dans uen variable d’environnement (NB_TERMS) qui sera passé lors de l’exécution au conteneur.
On voit des balises “RUNNING”, “SUCCEEDED” et “FAILED” qui transmettent à l’orchestrateur l’état de l’exécution.
import sys
import time
import os
def fibonacci(n):
if n==1:
return 0
elif n==2:
return 1
else:
return fibonacci(n-1)+fibonacci(n-2)
print("__RUNNING__")
try:
nb_terms_env=os.getenv("NB_TERMS", default="10")
nb_terms=int(nb_terms_env)
for i in range(1,nb_terms+1):
time.sleep(2)
print("Terme {} de la suite de fibonacci : {}".format(i,fibonacci(i)))
print("__SUCCEEDED__")
except Exception as e:
print(e)
print("__FAILED__")
#Sleep for 10 seconds to give the logger time to send the output of stdout and stderr
time.sleep(10)
Dans la section Artefact cliquez sur “New”
il suffit de remplir les valeurs dans le formulaire suivant et de mettre la valeur souhaitée dans la variable d’environnement “NB_TERMS”
Une fois l’Artefact créé, il suffit de démarrer l’execution de celui-ci avec le bouton “Launch”
Connexions Flows Tasks, Artefacts & Bundles Transformations SQL Navigateur de stockage Explorateur de données Exposition de services
Charger de la donnée Modéliser avec DBT Créer un artefact custom
<aside> 📌 © DataTask sas 2022
</aside>