Installer les bibliothèques tierces Python 3
Python 3 remplace le processeur Python. Il supporte tout ce que l'ancien processeur supportait et comprend quelques autres fonctionnalités, comme l'installation des bibliothèques tierces.
Différences entre Python 2 et Python 3
- Le code doit être du code Python 3 et non Python 2.
- Les concepts de Map et de Flatmap lors de la modification d'enregistrements n'existent plus. D'où la disparition de la liste déroulante correspondante dans l'interface.
La dernière différence n'est pas des moindres, elle permet d'utiliser directement du code pour filtrer, mapper ou simplifier les maps d'enregistrements.
if input['type'] == "house":
# Single family dwellings have a top-level occupant (MAP).
output = input['occupant']
elif input['type'] == "apartment":
# Apartment blocks have many occupants (FLATMAP).
output = [apt['occupant'] for apt in input['subdwellings']
else:
# Deleting the record (FILTER).
output = None
Installer les bibliothèques
- dans le conteneur previewrunner
- dans le conteneur livy
Vous pouvez installer les bibliothèques à l'aide d'un fichier ou d'une invite de commande.
Installer des bibliothèques dans le Moteur distant Gen2 à l'aide du fichier requirements.txt
Dans le conteneur previewrunner :
-
Créez un dossier sur votre machine locale. Nommez-le /tmp/rqmts par exemple.
- Ouvrez ce fichier pour le modifier :
default/docker-compose.yml si vous utilisez le moteur dans les régions AWS USA, AWS Europe, AWS Asie-Pacifique ou Azure.
eap/docker-compose.yml si vous utilisez le moteur au sein du programme Early Adopter Program.
- Ajoutez ce paramètre dans la section
- /tmp/rqmts:/opt/rqmts
du fichier : - Ajoutez ce paramètre dans la section
PYTHON_RQMTS_PATH: /opt/rqmts
Notez que les chemins d'accès sont entièrement personnalisables tant que vous avez accès en écriture à ces fichiers.
et enregistrez vos modifications : - Allez dans Talend Cloud Pipeline Designer et vérifiez que la création de pipeline avec le processeur Python 3 fonctionne normalement.
- Créez un fichier requirements.txt dans le dossier /tmp/rqmts. Ce fichier doit contenir les bibliothèques à installer dans Python Virtual Environment :
jinja2==2.11.2
- Retournez dans votre pipeline et ajoutez du code utilisant les bibliothèques spécifiées dans requirements.txt dans votre processeur Python 3. Par exemple :
from jinja2 import Template t = Template("Hello {{something}}!") output["hello"] = t.render(something = input["Op"])
Enregistrez vos modifications et vérifiez que l'aperçu des données fonctionne correctement. Vous pouvez modifier le fichier requirements.txt sur votre machine locale et mettre à jour votre code. Vous devriez constater que tout fonctionne correctement.
Dans le conteneur livy :
La procédure est similaire à celle du conteneur previewrunner, la seule différence est que vous devez modifier la section livy du fichier docker-compose.xml.
- Ajoutez la variable d'environnement PYTHON_RQMTS_PATH à votre cluster. Elle doit pointer vers un volume monté et non vers un dossier qui se trouve supprimé dès que le serveur du worker s'arrête.
Par exemple : /dbfs/tpd-python3-rqmts
- Répétez les mêmes étapes que pour le conteneur previewrunner (créez le fichier requirements.txt dans le dossier /dbfs/tpd-python3-rqmts, mettez à jour votre pipeline, etc.). Tout doit fonctionner normalement.
Installer des bibliothèques dans le Moteur distant Gen2 via l'invite de commande.
Les bibliothèques peuvent également être installées directement à l'aide de l'invite de commande ou de l'exécution d'un script shell.
Pour cela, vous devez installer vos bibliothèques dans les conteneurs previewrunner et livy.
-
Dans Talend Cloud Pipeline Designer, commencez par créer un pipeline contenant un processeur Python 3 puis essayez-le pour en avoir un aperçu.
Cela va forcer l'extraction de tous les fichiers Python dans votre conteneur previewrunner.
- À partir de l'invite de commande, exécutez une commande comme celle-ci pour installer numpy, par exemple :
docker exec -it [previewrunner_docker_img_name] \ bash -c "source /tmp/luci/local/env/default/bin/activate && pip install numpy"
- Vous pouvez ensuite modifier votre code dans le processeur Python 3 et enregistrer vos modifications.
-
Dans Talend Cloud Pipeline Designer, créez un pipeline contenant un processeur Python 3 pour forcer l'extraction de tous les fichiers Python.
- À partir de l'invite de commande, exécutez une commande comme celle-ci pour installer jinja2, par exemple :
docker exec -it [livy_docker_img_name] \ bash -c "source /tmp/luci/local/env/default/bin/activate && pip install jinja2"
- Écrivez quelques lignes de code dans votre processeur Python 3 qui utilisent jinja2, enregistrez vos modifications et vérifiez que l'aperçu s'affiche correctement.