Tutorial: configura un PyCharm professionista con un endpoint di sviluppo - AWS Glue

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tutorial: configura un PyCharm professionista con un endpoint di sviluppo

Questo tutorial mostra come connettere l'IDE PyCharm Professional Python in esecuzione sul computer locale a un endpoint di sviluppo in modo da poter eseguire, eseguire il debug e testare in modo interattivo AWS Glue Script ETL (estrazione, trasferimento e caricamento) prima di distribuirli. Le istruzioni e le schermate del tutorial si basano sulla PyCharm versione Professional 2019.3.

Per connetterti a un endpoint di sviluppo in modo interattivo, devi avere installato Professional. PyCharm Non puoi farlo usando l'edizione gratuita.

Nota

Il tutorial utilizza Amazon S3 come origine dati. Se invece desideri utilizzare un'origine dati JDBC, devi eseguire l'endpoint di sviluppo in un cloud privato virtuale (VPC). Per connetterti con SSH a un endpoint di sviluppo in un VPC, devi creare un tunnel SSH. Questo tutorial non include le istruzioni per la creazione di un tunnel SSH. Per informazioni sull'utilizzo di SSH per la connessione a un endpoint di sviluppo in un VPC, consulta Securely Connect to Linux Instances Running in un Amazon VPC privato nel blog sulla sicurezza. AWS

Connessione di un professionista a un endpoint di sviluppo PyCharm

  1. Crea un nuovo progetto Pure-Python in named. PyCharm legislators

  2. Crea un file denominato get_person_schema.py nel progetto con il seguente contenuto:

    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. Esegui una di queste operazioni:

    • In AWS Glue versione 0.9, scarica il AWS Glue File della libreria PythonPyGlue.zip, https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl/python/PyGlue.zip da una posizione comoda sul computer locale.

    • In AWS Glue versione 1.0 e successive, scarica il AWS Glue File della libreria PythonPyGlue.zip, https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl-1.0/python/PyGlue.zip da una posizione comoda sul computer locale.

  4. Aggiungi PyGlue.zip come radice di contenuto per il tuo progetto in PyCharm:

    • In PyCharm, scegliete File, Impostazioni per aprire la finestra di dialogo Impostazioni. Puoi anche premere Ctrl+Alt+S.

    • Espandi il progetto legislators e scegli Project Structure (Struttura del progetto). Quindi nel riquadro di destra, scegli + Add Content Root (+ Aggiungi Content Root).

    • Seleziona il percorso in cui hai salvato PyGlue.zip, selezionalo, quindi scegli Apply (Applica).

    La schermata Settings (Impostazioni) deve avere un aspetto simile al seguente:

    La schermata PyCharm Impostazioni con PyGlue .zip aggiunto come radice del contenuto.

    Lascia aperta la finestra di dialogo Settings (Impostazioni) dopo aver scelto Apply (Applica).

  5. Configura le opzioni di distribuzione per caricare lo script locale sull'endpoint di sviluppo utilizzando SFTP (questa funzionalità è disponibile solo in PyCharm Professional):

    • Nella finestra di dialogo Settings (Impostazioni), espandi la sezione Build, Execution, Deployment (Creazione, esecuzione e distribuzione). Scegli la sottosezione Deployment (Distribuzione).

    • Scegli l'icona + in alto nel riquadro centrale per aggiungere un nuovo server. Imposta il Type (Tipo) su SFTP e assegna un nome.

    • Imposta SFTP host (Host SFTP) sull'indirizzo pubblico dell'endpoint di sviluppo, come indicato nella pagina dei dettagli. (Scegliete il nome del vostro endpoint di sviluppo nel AWS Glue console per visualizzare la pagina dei dettagli). Per un endpoint di sviluppo in esecuzione in un VPC, imposta l'host SFTP sull'indirizzo host e la porta locale del tunnel SSH sull'endpoint di sviluppo.

    • Imposta lo User name (Nome utente) su glue.

    • Imposta l'Auth type (Tipo di autenticazione) per la Key pair (OpenSSH or Putty) (Coppia di chiavi, OpenSSH o Putty). Imposta il Private key file (File della chiave privata) cercando il percorso in cui si trova il file della chiave privata dell'endpoint di sviluppo. Nota che supporta PyCharm solo i tipi di chiave OpenSSH DSA, RSA ed ECDSA e non accetta chiavi nel formato privato di Putty. È possibile utilizzare una up-to-date versione di per generare un tipo di coppia di chiavi ssh-keygen che accetti, utilizzando una sintassi come la seguente: PyCharm

      ssh-keygen -t rsa -f <key_file_name> -C "<your_email_address>"
    • Scegli Test connection (Test connessione) e consenti il test della connessione. Se la connessione viene stabilita, scegli Apply (Applica).

    La schermata Settings (Impostazioni) ora deve avere un aspetto simile al seguente:

    La schermata PyCharm Impostazioni con un server SFTP definito.

    Lascia nuovamente aperta la finestra di dialogo Settings (Impostazioni) dopo aver scelto Apply (Applica).

  6. Imposta la directory locale su una directory remota per la distribuzione:

    • Nel riquadro a destra della pagina Deployment (Distribuzione), scegli la scheda centrale nella parte superiore, contrassegnata dall'etichetta Mappings (Mappe).

    • Nella colonna Deployment Path (Percorso di distribuzione), immetti un percorso sotto /home/glue/scripts/ per la distribuzione del percorso del progetto. Ad esempio: /home/glue/scripts/legislators.

    • Scegli Applica.

    La schermata Settings (Impostazioni) ora deve avere un aspetto simile al seguente:

    La schermata PyCharm Impostazioni dopo una mappatura della distribuzione.

    Scegli OK per chiudere la finestra di dialogo Settings (Impostazioni).

Distribuzione dello script nell'endpoint di sviluppo

  1. Scegli Tools (Strumenti), Deployment (Distribuzione), quindi scegli il nome con cui hai configurato l'endpoint di sviluppo, come illustrato nell'immagine seguente:

    Voce di menu per la distribuzione dello script.

    Dopo che lo script è stato distribuito, la parte inferiore della schermata deve avere un aspetto simile al seguente:

    La parte inferiore dello PyCharm schermo dopo una distribuzione riuscita.
  2. Nella barra dei menu scegli Tools (Strumenti), Deployment (Distribuzione), Automatic Upload (always) (Caricamento automatico (sempre)). Accertati che venga visualizzato un segno di spunta accanto a Automatic Upload (always) (Caricamento automatico (sempre)).

    Quando questa opzione è abilitata, carica PyCharm automaticamente i file modificati sull'endpoint di sviluppo.

Configurazione di un interprete remoto

Configura PyCharm per utilizzare l'interprete Python sull'endpoint di sviluppo.

  1. Nel menu File, scegli Settings (Impostazioni).

  2. Espandi i legislators (legislatori) del progetto e scegli Project Interpreter (Interprete di progetto).

  3. Scegli l'icona a forma di ingranaggio accanto all'elenco Project Interpreter (Interprete di progetto) quindi scegli Add (Aggiungi).

  4. Nella finestra di dialogo Add Python Interpreter (Aggiungi interprete Python) nel riquadro di sinistra, scegli SSH Interpreter (Interprete SSH).

  5. Scegli Existing server configuration (Configurazione server esistente) e nell'elenco Deployment configuration (Configurazione distribuzione) scegli la configurazione.

    La schermata ora deve avere un aspetto simile all'immagine seguente.

    Nel riquadro di sinistra è selezionato l'interprete SSH e nel riquadro di destra è selezionato il pulsante di opzione Existing server configuration (Configurazione server esistente). Il campo Deployment configuration (Configurazione distribuzione) contiene il nome della configurazione e il messaggio indicante che l'SDK remoto viene salvato nelle impostazioni dell'IDE e quindi è necessario salvarvi anche il server di distribuzione. Quindi vengono elencate le preferenze. Di seguito sono riportate le opzioni disponibili: "Create copy of this deployment server in IDE settings (Crea copia del server di distribuzione nelle impostazioni IDE)" e "Move this server to IDE settings (Sposta il server nelle impostazioni IDE".
  6. Scegli "Move this server to IDE settings (Sposta il server nelle impostazioni IDE", quindi seleziona Next (Successivo).

  7. Nel campo Interpreter (Interprete) cambia il percorso in /usr/bin/gluepython se stai usando Python 2 o in /usr/bin/gluepython3 se stai usando Python 3. Quindi scegli Finish (Fine).

Esecuzione dello script sull'endpoint di sviluppo

Per eseguire lo script:

  • Nel riquadro sinistro, fai clic con il pulsante destro del mouse sul nome del file e scegli Esegui ''. <filename>

    Dopo una serie di messaggi, l'output finale mostra il conteggio e lo schema.

    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

Ora hai effettuato la configurazione per eseguire il debug dello script in remoto sul tuo endpoint di sviluppo.