Tutorial: Einrichten von PyCharm Professional mit einem Entwicklungsendpunkt - 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.

Tutorial: Einrichten von PyCharm Professional mit einem Entwicklungsendpunkt

In diesem Tutorial erfahren Sie, wie Sie den Python-IDE PyCharm Professional, der auf Ihrem lokalen Rechner ausgeführt wird, mit einem Entwicklungsendpunkt verbinden, sodass Sie AWS Glue-ETL (Extract, Transfer and Load)-Skripts vor der Bereitstellung interaktiv ausführen, debuggen und testen können. Die Anweisungen und Screenshots im Tutorial basieren auf PyCharm Professional Version 2019.3.

Um interaktiv eine Verbindung mit einem Entwicklungsendpunkt herzustellen, muss PyCharm Professional installiert sein. Dies können Sie nicht mit der kostenlosen Version durchführen.

Anmerkung

Im Tutorial wird Amazon S3 als Datenquelle verwendet. Wenn Sie stattdessen eine JDBC-Datenquelle verwenden möchten, müssen Sie Ihren Entwicklungsendpunkt in einer Virtual Private Cloud (VPC) ausführen. Um eine Verbindung mit SSH zu einem Entwicklungsendpunkt in einer VPC herzustellen, müssen Sie einen SSH-Tunnel erstellen. Dieses Tutorial enthält keine Anweisungen zum Erstellen eines SSH-Tunnels. Informationen zur Verwendung von SSH zur Verbindung mit einem Entwicklungsendpunkt in einer VPC finden Sie unter Securely Connect to Linux Instances Running in a Private Amazon VPC im AWS-Sicherheitsblog.

Verbinden von PyCharm Professional mit einem Entwicklungsendpunkt

  1. Erstellen Sie ein neues Python-Projekt in PyCharm mit dem Namen legislators.

  2. Erstellen Sie im Projekt eine Datei mit dem Namen get_person_schema.py und dem folgenden Inhalt:

    from pyspark.context import SparkContext from awsglue.context import GlueContext def main(): # Create a Glue context glueContext = GlueContext(SparkContext.getOrCreate()) # Create a DynamicFrame using the 'persons_json' table persons_DyF = glueContext.create_dynamic_frame.from_catalog(database="legislators", table_name="persons_json") # Print out information about this data print("Count: ", persons_DyF.count()) persons_DyF.printSchema() if __name__ == "__main__": main()
  3. Führen Sie eine der folgenden Aktionen aus:

    • Laden Sie für AWS Glue 0.9 die AWS Glue-Python-Bibliotheksdatei PyGlue.zip von https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl/python/PyGlue.zip in einen geeigneten Speicherort auf Ihrem lokalen Computer herunter.

    • Laden Sie für AWS Glue 1.0 und höhere Versionen die AWS Glue-Python-Bibliotheksdatei PyGlue.zip von https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl-1.0/python/PyGlue.zip in einen geeigneten Speicherort auf Ihrem lokalen Computer herunter.

  4. Fügen Sie PyGlue.zip als Inhalts-Stammverzeichnis für Ihr Projekt in PyCharm hinzu:

    • Wählen Sie in PyCharm File (Datei), Settings (Einstellungen) aus, um das Dialogfeld Settings (Einstellungen) zu öffnen. (Sie können auch Ctrl+Alt+S betätigen.)

    • Erweitern Sie das Projekt legislators und wählen Sie Project Structure (Projektstruktur) aus. Wählen Sie anschließend auf der rechten Seite + Add Content Root (+ Inhalts-Stammverzeichnis hinzufügen) aus.

    • Navigieren Sie zum Speicherort, an dem Sie PyGlue.zip gespeichert haben, und wählen Sie dann Apply (Anwenden) aus.

    Der Bildschirm Settings (Einstellungen) sollte etwa wie folgt aussehen:

    PyCharm-Einstellungsbildschirm, in dem PyGlue.zip zum Inhalts-Stammverzeichnis hinzugefügt wurde.

    Lassen Sie das Dialogfeld Settings (Einstellungen) geöffnet, nachdem Sie Apply (Anwenden) ausgewählt haben.

  5. Konfigurieren Sie Bereitstellungsoptionen für das Hochladen des lokalen Skripts auf Ihren Entwicklungsendpunkt mit SFTP (diese Funktion steht nur in PyCharm Professional zur Verfügung):

    • Erweitern Sie im Dialogfeld Settings (Einstellungen) den Abschnitt Build, Execution, Deployment (Erstellung, Ausführung, Bereitstellung). Wählen Sie den Teilabschnitt Deployment (Bereitstellung) aus.

    • Wählen Sie das Symbol + oben im mittleren Bereich aus, um einen neuen Server hinzuzufügen. Setzen Sie seinen Type (Typ) auf SFTP, und geben Sie ihm einen Namen.

    • Legen Sie den SFTP-Host auf die Public Address (Öffentliche Adresse) Ihres Entwicklungsendpunkts fest, wie auf der Detailseite aufgeführt. (Wählen Sie den Namen Ihres Entwicklungsendpunkts in der AWS Glue-Konsole, um die Detailseite anzuzeigen). Legen Sie für einen Entwicklungsendpunkt, der in einer VPC ausgeführt wird, den SFTP-Host auf die Hostadresse und den lokalen Port des SSH-Tunnels auf den Entwicklungsendpunkt fest.

    • Legen Sie den User name (Benutzername) auf glue fest.

    • Legen Sie den Auth type (Authentifizierungstyp) auf Key pair (OpenSSH or Putty) (Schlüsselpaar (OpenSSH oder PuTTY)) fest. Legen Sie die Private key file (Datei für den privaten Schlüssel) fest, indem Sie zum Speicherort navigieren, an dem die Datei für den privaten Schlüssel Ihres Entwicklungsendpunkts gespeichert ist. Beachten Sie, dass PyCharm nur die Schlüsseltypen DSA, RSA und ECDSA OpenSSH unterstützt und keine Schlüssel im privaten Format von PuTTY akzeptiert. Sie können eine aktuelle Version von ssh-keygen verwenden, um einen Schlüsselpaartyp zu erzeugen, der von PyCharm akzeptiert wird. Verwenden Sie dazu eine Syntax wie folgt:

      ssh-keygen -t rsa -f <key_file_name> -C "<your_email_address>"
    • Wählen Sie Test SFTP connection (SFTP-Verbindung testen) aus, und lassen Sie das Testen der Verbindung zu. Wenn die Verbindung erfolgreich hergestellt wird, wählen Sie Apply (Anwenden) aus.

    Der Bildschirm Settings (Einstellungen) sollte nun etwa wie folgt aussehen:

    PyCharm-Einstellungsbildschirm, in dem ein SFTP-Server angegeben ist.

    Lassen Sie wiederum das Dialogfeld Settings (Einstellungen) geöffnet, nachdem Sie Apply (Anwenden) ausgewählt haben.

  6. Ordnen Sie das lokale Verzeichnis einem Remote-Verzeichnis für die Bereitstellung zu:

    • Wählen Sie rechts auf der Seite Deployment (Bereitstellung) die mittlere Registerkarte mit der Bezeichnung Mappings aus.

    • Geben Sie in der Spalte Deployment Path (Bereitstellungspfad) einen Pfad für die Bereitstellung Ihres Projekts unter /home/glue/scripts/ ein. Beispiel: /home/glue/scripts/legislators.

    • Wählen Sie Apply (Anwenden) aus.

    Der Bildschirm Settings (Einstellungen) sollte nun etwa wie folgt aussehen:

    PyCharm-Einstellungsbildschirm nach einem Bereitstellungsmapping.

    Klicken Sie auf OK, um das Dialogfeld Settings (Einstellungen) zu schließen.

Bereitstellen des Skripts auf Ihrem Entwicklungsendpunkt

  1. Wählen Sie Tools (Extras), Deployment (Bereitstellung), und wählen Sie dann den Namen, unter dem Sie Ihren Entwicklungsendpunkt einrichten, wie im folgenden Image dargestellt:

    Die Menüoption zur Bereitstellung Ihres Skripts.

    Nachdem Ihr Skript bereitgestellt wurde, sollte der untere Bereich des Bildschirms etwa wie folgt aussehen:

    Der untere Bereich des PyCharm-Bildschirms nach erfolgreicher Bereitstellung.
  2. Wählen Sie in der Menüleiste Tools (Extras), Deployment (Bereitstellung), Automatic Upload (always) (Automatischer Upload (immer)). Stellen Sie sicher, dass neben Automatic Upload (always) (Automatischer Upload (immer)) ein Häkchen angezeigt wird.

    Wenn diese Option aktiviert ist, lädt PyCharm geänderte Dateien automatisch auf den Entwicklungsendpunkt hoch.

Konfigurieren eines Remote Interpreters

Konfigurieren Sie PyCharm so, dass der Python-Interpreter auf dem Entwicklungsendpunkt verwendet wird.

  1. Wählen Sie im Menü File (Datei) die Option Open (Öffnen) aus.

  2. Erweitern Sie die Project legislators (Projektgesetzgeber), und wählen Sie Project Interpreter.

  3. Wählen Sie das Zahnradsymbol neben der Liste Project Interpreter, und wählen Sie dann Add (Hinzufügen).

  4. Wählen Sie im Dialogfeld Add Python Interpreter (Python-Interpreter hinzufügen) im linken Bereich die Option SSH-Interpreter.

  5. Wählen Sie Existing server configuration (Vorhandene Serverkonfiguration), und wählen Sie in der Liste Deployment configuration (Bereitstellungskonfiguration) Ihre Konfiguration aus.

    Ihr Bildschirm sollte ungefähr wie das folgende Image aussehen.

    Im linken Bereich ist SSH-Interpreter ausgewählt, und im rechten Bereich ist das Optionsfeld „Existing server configuration (Vorhandene Serverkonfiguration)“ aktiviert. Das Feld „Deployment configuration (Bereitstellungskonfiguration)“ enthält den Konfigurationsnamen und die Meldung „Remote SDK is saved in IDE settings, so it needs the deployment server to be saved there too. Which do you prefer? (Remote-SDK wird in IDE-Einstellungen gespeichert. Daher muss auch der Bereitstellungsserver dort gespeichert werden.Was bevorzugen Sie?)“. Folgende Optionen stehen unter dieser Meldung zur Auswahl: „Create copy of this deployment server in IDE settings (Kopie dieses Bereitstellungsservers in IDE-Einstellungen erstellen)“ und „Move this server to IDE settings. (Diesen Server in IDE-Einstellungen verschieben)“.
  6. Wählen Sie Move this server to IDE settings (Diesen Server in IDE-Einstellungen verschieben) und dann Next (Weiter).

  7. Ändern Sie im Feld Interpreter den Pfad zu /usr/bin/gluepython, wenn Sie Python 2 verwenden, oder zu /usr/bin/gluepython3, wenn Sie Python 3 verwenden. Klicken Sie auf Finish (Fertig stellen).

Ausführen Ihres Skripts auf dem Entwicklungsendpunkt

So führen Sie das Skript aus:

  • Klicken Sie im linken Bereich mit der rechten Maustaste auf den Dateinamen, und wählen Sie Run (Ausführen) '<filename>' aus.

    Nach einer Reihe von Nachrichten sollte die endgültige Ausgabe die Anzahl und das Schema anzeigen.

    Count: 1961 root |-- family_name: string |-- name: string |-- links: array | |-- element: struct | | |-- note: string | | |-- url: string |-- gender: string |-- image: string |-- identifiers: array | |-- element: struct | | |-- scheme: string | | |-- identifier: string |-- other_names: array | |-- element: struct | | |-- lang: string | | |-- note: string | | |-- name: string |-- sort_name: string |-- images: array | |-- element: struct | | |-- url: string |-- given_name: string |-- birth_date: string |-- id: string |-- contact_details: array | |-- element: struct | | |-- type: string | | |-- value: string |-- death_date: string Process finished with exit code 0

Nun können Sie Ihr Skript remote auf Ihrem Entwicklungsendpunkt debuggen.