Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Konfiguration von Jobeigenschaften für Python-Shell-Jobs in AWS Glue

Fokusmodus
Konfiguration von Jobeigenschaften für Python-Shell-Jobs in AWS Glue - AWS Glue

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Sie können einen Python-Shell-Job verwenden, um Python-Skripte als Shell auszuführen in AWS Glue. Mit einem Python-Shell-Job können Sie Skripte ausführen, die mit Python 3.6 oder Python 3.9 kompatibel sind.

Anmerkung

Die Support für Pyshell v3.6 endet am 1. März 2026. Informationen zur Migration Ihrer Workloads finden Sie unter Migration von AWS Glue Python-Shell-Jobs. Wenn Sie mit der Python-Shell v3.9 fortfahren möchten, sieheMigration von Python-Shell 3.6 auf Python-Shell 3.9.

Einschränkungen

Beachten Sie die folgenden Einschränkungen von Python-Shell-Aufträgen:

  • Sie können für Python-Shell-Aufträge keine Auftragslesezeichen verwenden.

  • In Python 3.9+ können Sie keine Python-Bibliotheken als .egg Dateien packen. Nutzen Sie stattdessen .whl.

  • Die --extra-files-Option kann aufgrund einer Beschränkung für temporäre Kopien von S3-Daten nicht verwendet werden.

Definieren von Auftragseigenschaften für Python-Shell-Aufträge

In diesen Abschnitten wird die Definition von Jobeigenschaften beschrieben in AWS Glue Studio, oder mit der AWS CLI.

AWS Glue Studio

Wenn Sie Ihren Python-Shell-Job definieren in AWS Glue Studio, geben Sie einige der folgenden Eigenschaften an:

IAM-Rolle

Geben Sie die AWS Identity and Access Management (IAM-) Rolle an, die für die Autorisierung von Ressourcen verwendet wird, die für die Ausführung des Jobs und den Zugriff auf Datenspeicher verwendet werden. Weitere Informationen zu Berechtigungen für die Ausführung von Jobs finden Sie in AWS Glue, finden Sie unter Identitäts- und Zugriffsmanagement für AWS Glue.

Typ

Wählen Sie Python shell (Python-Shell) aus, um ein Python-Skript mit dem Auftragsbefehl pythonshell auszuführen.

Python-Version

Wählen Sie die Python-Version aus. Die Standardeinstellung ist Python 3.9. Gültige Versionen sind Python 3.6 und Python 3.9.

Allgemeine Analyse-Bibliotheken laden (empfohlen)

Wählen Sie diese Option, um allgemeine Bibliotheken für Python 3.9 in die Python-Shell aufzunehmen.

Wenn Ihre Bibliotheken entweder benutzerdefiniert sind oder mit den vorinstallierten in Konflikt stehen, können Sie sich dafür entscheiden, keine gängigen Bibliotheken zu installieren. Sie können jedoch neben den üblichen Bibliotheken weitere Bibliotheken installieren.

Wenn Sie diese Option auswählen, wird die library-set-Option auf analytics gesetzt. Wenn Sie diese Option abwählen, wird die library-set-Option auf none gesetzt.

Name der Skriptdatei und Skriptpfad

Der Code im Skript definiert die prozedurale Logik Ihres Auftrags. Geben Sie den Skript-Namen und den Speicherort in Amazon Simple Storage Service (Amazon S3) an. Vergewissern Sie sich, dass sich keine Datei mit dem Namen des Skriptverzeichnisses im Pfad befindet. Weitere Informationen über die Verwendung von Skripts finden Sie unter AWS Glue Leitfaden zur Programmierung.

Script

Der Code im Skript definiert die prozedurale Logik Ihres Auftrags. Sie können das Skript in Python 3.6 oder Python 3.9 codieren. Sie können ein Skript bearbeiten in AWS Glue Studio.

Datenverarbeitungseinheiten

Die maximale Anzahl von AWS Glue Datenverarbeitungseinheiten (DPUs), die zugewiesen werden können, wenn dieser Job ausgeführt wird. Eine DPU ist eine relative Maßeinheit für die Rechenleistung, die sich aus 4 V CPUs Rechenkapazität und 16 GB Arbeitsspeicher zusammensetzt. Weitere Informationen finden Sie unter .AWS Glue Preisgestaltung.

Sie können den Wert auf 0,0625 oder 1 festlegen. Der Standardwert ist 0.0625. In beiden Fällen beträgt die lokale Festplatte für die Instance 20 GB.

CLI

Sie können auch einen Python-Shell-Job mit dem erstellen AWS CLI, wie im folgenden Beispiel.

aws glue create-job --name python-job-cli --role Glue_DefaultRole --command '{"Name" : "pythonshell", "PythonVersion": "3.9", "ScriptLocation" : "s3://DOC-EXAMPLE-BUCKET/scriptname.py"}' --max-capacity 0.0625
Anmerkung

Sie müssen die Version von nicht angeben AWS Glue da der Parameter --glue-version nicht gilt für AWS Glue Shell-Jobs. Jede angegebene Version wird ignoriert.

Jobs, die Sie mit der AWS CLI Standardeinstellung Python 3 erstellen. Gültige Python-Versionen sind 3 (entsprechend 3.6) und 3.9. Um Python 3.6 anzugeben, fügen Sie dieses Tupel dem --command-Parameter hinzu: "PythonVersion":"3"

Um Python 3.9 anzugeben, fügen Sie dieses Tupel dem --command-Parameter hinzu: "PythonVersion":"3.9"

Um die maximale Kapazität festzulegen, die von einem Python-Shell-Auftrag genutzt werden darf, geben Sie den Parameter --max-capacity an. Der Parameter --allocated-capacity kann für Python-Shell-Aufträge nicht verwendet werden.

Für Python-Shell-Aufträge unterstützte Bibliotheken

In der Python-Shell mit Python 3.9 können Sie den Bibliothekssatz auswählen, um vorgefertigte Bibliothekssätze für Ihre Anforderungen zu verwenden. Sie können die library-set-Option verwenden, um den Bibliothekssatz auszuwählen. Gültige Werte sind analytics und none.

Die Umgebung für die Ausführung von Python-Shell-Aufträgen unterstützt die folgenden Bibliotheken:

Python-Version Python 3.6 Python 3.9
Bibliothek-Set N/A Analytik Keine
avro 1.11.0
awscli 116.242 1,23,5 1,23,5
awswrangler 2.15,1
botocore 1.12,232 1,24,21 1,23,5
boto3 1,9,203 1,21,21
elasticsearch 8.2.0
numpy 1,16.2 1.22.3
pandas 0,24,2 1.4.2
psycopg2 2.9.3
pyathena 2.5.3
PyGreSQL 5.0.6
PyMySQL 1.0.2
pyodbc 4.0.32
pyorc 0.6.0
redshift-connector 2.0.907
Anforderungen 2.22.0 2,27,1
Scikit-learn 0,20,3 1.0.2
scipy 1.2.1 1.8.0
SQLAlchemy 1,4,36
s3fs 2022,3,0

Für wissenschaftliches Computing können Sie die Bibliothek NumPy in einer Python-Shell-Aufgabe verwenden. Weitere Informationen finden Sie unter NumPy. Das folgende Beispiel zeigt ein NumPy Skript, das in einem Python-Shell-Job verwendet werden kann. Das Skript gibt „Hello World“ und die Ergebnisse mehrerer mathematischer Berechnungen aus.

import numpy as np print("Hello world") a = np.array([20,30,40,50]) print(a) b = np.arange( 4 ) print(b) c = a-b print(c) d = b**2 print(d)

Bereitstellen Ihrer eigenen Python-Bibliothek

Verwenden von PIP

Mit Python-Shell, die Python 3.9 verwendet, können Sie zusätzliche Python-Module oder verschiedene Versionen auf der Auftragsebene bereitstellen. Sie können die Option „--additional-python-modules“ mit verschiedenen kommagetrennten Python-Modulen verwenden, um ein neues Modul hinzuzufügen oder die Version eines vorhandenen Moduls zu ändern. Sie können benutzerdefinierte Python-Module, die auf Amazon S3 gehostet werden, nicht mit diesem Parameter bereitstellen, wenn Sie Python-Shell-Aufträge verwenden.

Verwenden Sie beispielsweise zum Aktualisieren oder Hinzufügen eines neuen scikit-learn-Moduls den folgenden Schlüssel und Wert: "--additional-python-modules", "scikit-learn==0.21.3".

AWS Glue verwendet den Python Package Installer (pip3), um die zusätzlichen Module zu installieren. Sie können zusätzliche pip3-Optionen innerhalb des --additional-python-modules-Werts übergeben. Beispiel, "scikit-learn==0.21.3 -i https://pypi.python.org/simple/". Es gelten alle Inkompatibilitäten oder Einschränkungen von pip3.

Anmerkung

Um Inkompatibilitäten in Zukunft zu vermeiden, empfehlen wir die Verwendung von Bibliotheken, die für Python 3.9 erstellt wurden.

Verwenden einer Egg- oder Whl-Datei

Möglicherweise verfügen Sie bereits über eine oder mehrere, als .egg- oder .whl-Datei verpackte Python-Bibliotheken. Wenn dies der Fall ist, können Sie diese für Ihre Aufgabe angeben, indem Sie die AWS Command Line Interface (AWS CLI) unter dem Flag „--extra-py-files“ verwenden wie im folgenden Beispiel gezeigt.

aws glue create-job --name python-redshift-test-cli --role role --command '{"Name" : "pythonshell", "ScriptLocation" : "s3://MyBucket/python/library/redshift_test.py"}' --connections Connections=connection-name --default-arguments '{"--extra-py-files" : ["s3://DOC-EXAMPLE-BUCKET/EGG-FILE", "s3://DOC-EXAMPLE-BUCKET/WHEEL-FILE"]}'

Wenn Sie sich nicht sicher sind, wie Sie eine .egg- oder .whl-Datei aus einer Python-Bibliothek erstellen, führen Sie die folgenden Schritte aus. Dieses Beispiel gilt für macOS, Linux und Windows Subsystem for Linux (WSL).

So erstellen Sie eine Python-EGG- oder -WHL-Datei
  1. Erstellen Sie einen Amazon-Redshift-Cluster in einer Virtual Private Cloud (VPC) und fügen Sie einer Tabelle einige Daten hinzu.

  2. Erstellen Sie ein AWS Glue Verbindung für die VPC-SecurityGroup-Subnet Kombination, mit der Sie den Cluster erstellt haben. Testen Sie, ob die Verbindung erfolgreich ist.

  3. Erstellen Sie ein Verzeichnis mit dem Namen redshift_example und eine Datei mit dem Namen setup.py. Fügen Sie folgenden Code in ei setup.py.

    from setuptools import setup setup( name="redshift_module", version="0.1", packages=['redshift_module'] )
  4. Erstellen Sie im Verzeichnis redshift_example das Verzeichnis redshift_module. Erstellen Sie im Verzeichnis redshift_module die Dateien __init__.py und pygresql_redshift_common.py.

  5. Lassen Sie die Datei __init__.py leer. Fügen Sie in pygresql_redshift_common.py folgenden Code ein. Ersetzen Sieport, db_nameuser, und password_for_user durch spezifische Details für Ihren Amazon Redshift Redshift-Cluster. table_nameErsetzen Sie durch den Namen der Tabelle in Amazon Redshift.

    import pg def get_connection(host): rs_conn_string = "host=%s port=%s dbname=%s user=%s password=%s" % ( host, port, db_name, user, password_for_user) rs_conn = pg.connect(dbname=rs_conn_string) rs_conn.query("set statement_timeout = 1200000") return rs_conn def query(con): statement = "Select * from table_name;" res = con.query(statement) return res
  6. Wechseln Sie zum Verzeichnis redshift_example, sofern Sie dieses noch nicht aufgerufen haben.

  7. Führen Sie eine der folgenden Aktionen aus:

    • Führen Sie den folgenden Befehl aus, um eine .egg-Datei zu erstellen.

      python setup.py bdist_egg
    • Führen Sie den folgenden Befehl aus, um eine .whl-Datei zu erstellen.

      python setup.py bdist_wheel
  8. Installieren Sie die für den vorangehenden Befehl erforderlichen Abhängigkeiten.

  9. Der Befehl erstellt eine Datei im Verzeichnis dist.

    • Wenn Sie eine EGG-Datei erstellt haben, hat diese den Namen redshift_module-0.1-py2.7.egg.

    • Wenn Sie eine Wheel-Datei erstellt haben, hat diese den Namen redshift_module-0.1-py2.7-none-any.whl.

    Laden Sie diese Datei in Amazon S3 hoch.

    In diesem Beispiel ist der Pfad der hochgeladenen Datei s3://DOC-EXAMPLE-BUCKET/EGG-FILE oder s3://DOC-EXAMPLE-BUCKET/WHEEL-FILE.

  10. Erstellen Sie eine Python-Datei, die als Skript für die verwendet werden soll AWS Glue Job und fügen Sie der Datei den folgenden Code hinzu.

    from redshift_module import pygresql_redshift_common as rs_common con1 = rs_common.get_connection(redshift_endpoint) res = rs_common.query(con1) print "Rows in the table cities are: " print res
  11. Laden Sie die vorangehende Datei in Amazon S3 hoch. In diesem Beispiel ist der Pfad der hochgeladenen Datei s3://DOC-EXAMPLE-BUCKET/scriptname.py.

  12. Erstellen Sie einen Python-Shell-Auftrag, der dieses Skript verwendet. Auf dem AWS Glue In der Konsole geben Sie auf der Seite mit den Auftragseigenschaften den Pfad zur .egg/.whl Datei im Feld Python-Bibliothekspfad an. Wenn es mehrere .egg/.whl- und Python-Dateien gibt, geben Sie in diesem Feld eine durch Komma getrennte Liste ein.

    Beim Ändern oder Umbenennen von .egg-Dateien müssen die Dateinamen die Standardnamen verwenden, die mit dem Befehl „python setup.py bdist_egg“ generiert werden, oder die Benennungskonventionen des Python-Moduls einhalten. Weitere Informationen finden Sie in den Vorgaben für Python-Code.

    Erstellen Sie mithilfe von einen Job mit einem Befehl, wie im folgenden Beispiel. AWS CLI

    aws glue create-job --name python-redshift-test-cli --role Role --command '{"Name" : "pythonshell", "ScriptLocation" : "s3://DOC-EXAMPLE-BUCKET/scriptname.py"}' --connections Connections="connection-name" --default-arguments '{"--extra-py-files" : ["s3://DOC-EXAMPLE-BUCKET/EGG-FILE", "s3://DOC-EXAMPLE-BUCKET/WHEEL-FILE"]}'

    Wenn der Job ausgeführt wird, druckt das Skript die Zeilen, die in der table_name Tabelle im Amazon Redshift Redshift-Cluster erstellt wurden.

Verwendung AWS CloudFormation mit Python-Shell-Jobs in AWS Glue

Sie können AWS CloudFormation mit Python-Shell-Jobs in verwenden AWS Glue. Das Folgende ist ein Beispiel:

AWSTemplateFormatVersion: 2010-09-09 Resources: Python39Job: Type: 'AWS::Glue::Job' Properties: Command: Name: pythonshell PythonVersion: '3.9' ScriptLocation: 's3://bucket/location' MaxRetries: 0 Name: python-39-job Role: RoleName

Die Amazon CloudWatch Logs-Gruppe für die Ausgabe von Python-Shell-Jobs lautet/aws-glue/python-jobs/output. Informationen zu Fehlern finden Sie in der Protokollgruppe /aws-glue/python-jobs/error.

Migration von Python-Shell 3.6 auf Python-Shell 3.9

So migrieren Sie Ihre Python-Shell-Jobs auf die neueste AWS Glue Version:

  1. Wählen Sie in der AWS Glue Konsole (https://console.aws.amazon.com/glue/) Ihren vorhandenen Python-Shell-Job aus.

  2. Stellen Sie auf der Registerkarte Jobdetails die Python-Version auf ein Python 3.9 und wählen Sie Speichern.

  3. Stellen Sie sicher, dass Ihr Jobskript mit Python 3.9 kompatibel ist und erfolgreich ausgeführt wird.

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.