Installer les bibliothèques tierces Python 3 - Cloud

Guide des processeurs de Talend Cloud Pipeline Designer

Version
Cloud
Language
Français (France)
Product
Talend Cloud
Module
Talend Pipeline Designer
Content
Création et développement > Création de Pipelines

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 nouveau processeur fonctionne exactement de la même façon que l'ancien, avec deux différences notables :
  • 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.

Exemple de code Python 3 qui ne requiert plus l'utilisation de MAP ou FLATMAP :
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

Tout d'abord, installez Moteur distant Gen2 normalement. L'installation des bibliothèques s'effectue à deux endroits différents :
  • Dans le conteneur previewrunner
  • Dans le conteneur livy OU dans votre cluster Databricks (si c'est ce que vous utilisez)

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 :

Pour installer des bibliothèques 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 previewrunner > volumes du fichier :
    - /tmp/rqmts:/opt/rqmts
  • Ajoutez ce paramètre dans la section previewrunner > environment et enregistrez vos modifications :
    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.

  • 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.

Dans Databricks :

Les clusters Databricks requièrent l'installation de Python 3.6+, qui n'est pas disponible avec LTS 5.5. Vous devez donc, au minimum, configurer un cluster basé sur Databricks LTS ML 5.5.

  • 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.

Pour installer les bibliothèques dans le conteneur previewrunner :
  • 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.
Pour installer des bibliothèques dans le conteneur livy :
  • 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.