Zu Hauptinhalt springen Zu ergänzendem Inhalt springen

Installieren von Drittanbieter-Bibliotheken mit Python 3

Python 3 ersetzt den Python-Prozessor. Python 3 bietet dieselbe Unterstützung wie der alte Prozessor und stellt einige zusätzliche Funktionen bereit, wie z. B. die Installation von Drittanbieter-Bibliotheken.

Unterschiede zwischen Python 2 und Python 3

Der Python 3 Prozessor funktioniert genau wie der alte, mit zwei grundlegenden Unterschieden:
  • Der Code muss Python 3-spezifisch und darf nicht Python 2-spezifisch sein.
  • Bei der Änderung von Datensätzen ist das Konzept Map bzw. Flatmap nicht mehr zutreffend. Demzufolge existiert die entsprechende Dropdown-Liste in der Benutzeroberfläche nicht mehr.

Der letztere Unterschied ist von Bedeutung, da Sie dadurch zur Filterung, zum Mapping oder Flatmapping Ihrer Datensätze direkt Code schreiben können.

Beispiel für Python 3-Code, für den kein MAP oder FLATMAP mehr erforderlich ist:
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

Installieren von Bibliotheken

Zunächst müssen Sie Ihre Moteur distant Gen2 wie gewohnt einrichten. Die Installation von Bibliotheken erfolgt an zwei verschiedenen Orten:
  • im previewrunner-Container
  • im livy-Container:

Sie können für die Installation von Bibliotheken eine Datei oder die Befehlszeile verwenden.

Installieren von Bibliotheken in der Moteur distant Gen2 über die Datei requirements.txt

Im previewrunner-Container:

So installieren Sie Bibliotheken im previewrunner-Container:
  • Erstellen Sie einen Ordner auf Ihrem lokalen Rechner. Geben Sie ihm beispielsweise den Namen /tmp/rqmts.

  • Öffnen Sie die Datei, um sie zu bearbeiten:

    default/docker-compose.yml, wenn Sie die Engine in den Regionen AWS USA, AWS Europa, AWS Asien/Pazifik oder Azure einsetzen.

    eap/docker-compose.yml, wenn Sie die Engine im Rahmen eines Early-Adopter-Programms verwenden.

  • Fügen Sie folgenden Parameter im Abschnitt previewrunner > volumes der Datei hinzu:
    - /tmp/rqmts:/opt/rqmts
  • Fügen Sie folgenden Parameter im Abschnitt previewrunner > environment hinzu und speichern Sie Ihre Änderungen:
    PYTHON_RQMTS_PATH: /opt/rqmts

    Beachten Sie, dass die Pfade uneingeschränkt angepasst werden können, solange Sie über Schreibzugriff darauf verfügen.

  • Rufen Sie Talend Cloud Pipeline Designer auf und vergewissern Sie sich, dass die Erstellung einer Pipeline mit einem Python 3-Prozessor wie gewohnt abläuft.
  • Erstellen Sie die Datei requirements.txt im Ordner /tmp/rqmts. Diese Datei muss Bibliotheken enthalten, die in der virtuellen Python-Umgebung installiert werden sollen:
    jinja2==2.11.2
  • Kehren Sie zu Ihrer Pipeline zurück und fügen Sie Code hinzu, der die in requirements.txt in Ihrem Python 3-Prozessor genannten Bibliotheken verwendet. Beispiel:
    from jinja2 import Template
    
    t = Template("Hello {{something}}!")
    output["hello"] = t.render(something = input["Op"])

Speichern Sie Ihre Änderungen und vergewissern Sie sich, dass die Datenvorschau einen erfolgreichen Vorgang zeigt. Sie können die Datei requirements.txt auf Ihrem lokalen Rechner ändern und Ihren Code aktualisieren. Stellen Sie sicher, dass alles ordnungsgemäß funktioniert.

Im livy-Container:

Die Vorgehensweise entspricht derjenigen für den previewrunner-Container mit dem einzigen Unterschied, dass Sie den Abschnitt livy in der Datei docker-compose.xml bearbeiten müssen.

  • Fügen Sie die Umgebungsvariable PYTHON_RQMTS_PATH in Ihrem Cluster hinzu. Die Variable muss auf ein verbundenes Volume verweisen und nicht auf einen Ordner, der bei jedem Absturz des Worker Servers gelöscht wird.

    Beispiel: /dbfs/tpd-python3-rqmts

  • Wiederholen Sie dieselben Schritte wie für den previewrunner-Container (erstellen Sie requirements.txt im Ordner /dbfs/tpd-python3-rqmts, aktualisieren Sie die Pipeline usw.). Alles sollte ordnungsgemäß ablaufen.

Installieren von Bibliotheken in der Moteur distant Gen2 über die Befehlszeile

Bibliotheken können ebenfalls direkt über eine Befehlszeile oder durch Starten eines Shell-Skripts installiert werden.

Dazu müssen Sie die Bibliotheken sowohl im previewrunner- als auch im livy-Container installieren.

So installieren Sie Bibliotheken im previewrunner-Container:
  • Beginnen Sie in Talend Cloud Pipeline Designer mit der Erstellung einer Pipeline mit einem Python 3-Prozessor und versuchen Sie, eine Vorschau anzuzeigen.

    Dadurch wird das Entpacken aller Python-Dateien im previewrunner-Container erzwungen.

  • Führen Sie auf der Befehlszeile einen Befehl wie den nachstehenden aus, um numpy zu installieren. Beispiel:
    docker exec -it [previewrunner_docker_img_name] \
        bash -c "source /tmp/luci/local/env/default/bin/activate && pip install numpy"
  • Sie können Ihren Code dann im Python 3-Prozessor bearbeiten und Ihre Änderungen speichern.
So installieren Sie Bibliotheken im livy-Container:
  • Erstellen Sie in Talend Cloud Pipeline Designer eine Pipeline mit einem Python 3-Prozessor, um das Entpacken aller Python-Dateien zu erzwingen.

  • Führen Sie auf der Befehlszeile einen Befehl wie den nachstehenden aus, um jinja2 zu installieren. Beispiel:
    docker exec -it [livy_docker_img_name] \
        bash -c "source /tmp/luci/local/env/default/bin/activate && pip install jinja2"
  • Schreiben Sie Code in dem Python 3-Prozessor, der jinja2 verwendet, speichern Sie Ihre Änderungen und vergewissern Sie sich, dass die Vorschau einen erfolgreichen Ablauf anzeigt.

Hat diese Seite Ihnen geholfen?

Wenn Sie Probleme mit dieser Seite oder ihren Inhalten feststellen – einen Tippfehler, einen fehlenden Schritt oder einen technischen Fehler –, teilen Sie uns bitte mit, wie wir uns verbessern können!