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 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.
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
- 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 Remote Engine Gen2 über die Datei requirements.txt
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
- /tmp/rqmts:/opt/rqmts
der Datei hinzu: - Fügen Sie folgenden Parameter im Abschnitt
PYTHON_RQMTS_PATH: /opt/rqmts
Beachten Sie, dass die Pfade uneingeschränkt angepasst werden können, solange Sie über Schreibzugriff darauf verfügen.
hinzu und speichern Sie Ihre Änderungen: - 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 Remote Engine 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.
-
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.
-
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.