Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Tutoriel : Configuration d'un bloc-notes Jupyter JupyterLab pour tester et déboguer des scripts ETL

Mode de mise au point
Tutoriel : Configuration d'un bloc-notes Jupyter JupyterLab pour tester et déboguer des scripts ETL - AWS Glue

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Dans ce didacticiel, vous allez connecter un bloc-notes Jupyter en JupyterLab cours d'exécution sur votre machine locale à un point de terminaison de développement. Vous procédez ainsi afin de pouvoir exécuter, déboguer et tester de manière interactive AWS Glue extrayez, transformez et chargez des scripts (ETL) avant de les déployer. Ce didacticiel utilise la redirection de port Secure Shell (SSH) pour connecter votre machine locale à un AWS Glue point final de développement. Pour plus d'informations, consultez la page Wikipedia Redirection de port.

Étape 1 : Installation JupyterLab et Sparkmagic

Vous pouvez effectuer l'installation JupyterLab en utilisant conda oupip. condaest un système de gestion de paquets open source et un système de gestion d'environnement qui fonctionne sous Windows, macOS et Linux. pipest le programme d'installation du package pour Python.

Si vous effectuez l'installation sur macOS, vous devez avoir installé Xcode avant de pouvoir installer Sparkmagic.

  1. Install JupyterLab, Sparkmagic et les extensions associées.

    $ conda install -c conda-forge jupyterlab $ pip install sparkmagic $ jupyter nbextension enable --py --sys-prefix widgetsnbextension $ jupyter labextension install @jupyter-widgets/jupyterlab-manager
  2. Vérifiez le répertoire sparkmagic depuis Location.

    $ pip show sparkmagic | grep Location Location: /Users/username/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages
  3. Remplacez votre répertoire par celui renvoyé pourLocation, et installez les noyaux pour Scala et. PySpark

    $ cd /Users/username/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages $ jupyter-kernelspec install sparkmagic/kernels/sparkkernel $ jupyter-kernelspec install sparkmagic/kernels/pysparkkernel
  4. Télécharger un exemple de fichier config

    $ curl -o ~/.sparkmagic/config.json https://raw.githubusercontent.com/jupyter-incubator/sparkmagic/master/sparkmagic/example_config.json

    Dans ce fichier de configuration, vous pouvez configurer les paramètres liés à Spark tels que driverMemory et executorCores.

Étape 2 : Démarrer JupyterLab

Lorsque vous démarrez JupyterLab, votre navigateur Web par défaut s'ouvre automatiquement et l'URL http://localhost:8888/lab/workspaces/{workspace_name} s'affiche.

$ jupyter lab

Étape 3 : lancer le transfert de port SSH pour vous connecter à votre point de terminaison de développement

Ensuite, utilisez la redirection de port local SSH pour transférer un port local (ici,8998) vers la destination distante définie par AWS Glue (169.254.76.1:8998).

  1. Ouvrez une fenêtre de terminal séparée qui vous donne accès à SSH. Dans Microsoft Windows, vous pouvez utiliser le shell BASH fourni par Git pour Windows ou installer Cygwin.

  2. Exécutez la commande SSH suivante, modifiée comme suit :

    • Remplacez private-key-file-path par un chemin vers le fichier .pem qui contient la clé privée correspondant à la clé publique que vous avez utilisée pour créer le point de terminaison de développement.

    • Si vous réacheminez un autre port que 8998, remplacez 8998 par le numéro de port que vous utilisez localement. L'adresse, 169.254.76.1:8998, est le port distant et vous ne la modifiez pas.

    • Remplacez dev-endpoint-public-dns par l'adresse DNS publique du point de terminaison de développement. Pour trouver cette adresse, accédez à votre point de terminaison de développement dans le AWS Glue console, choisissez le nom et copiez l'adresse publique répertoriée sur la page de détails du point de terminaison.

    ssh -i private-key-file-path -NTL 8998:169.254.76.1:8998 glue@dev-endpoint-public-dns

    Vous verrez probablement un message d'avertissement, tel que le suivant :

    The authenticity of host 'ec2-xx-xxx-xxx-xx.us-west-2.compute.amazonaws.com (xx.xxx.xxx.xx)' can't be established. ECDSA key fingerprint is SHA256:4e97875Brt+1wKzRko+JflSnp21X7aTP3BcFnHYLEts. Are you sure you want to continue connecting (yes/no)?

    Entrez yes et laissez la fenêtre du terminal ouverte pendant que vous l'utilisez JupyterLab.

  3. Vérifiez que le réacheminement du port SSH fonctionne correctement avec le point de terminaison de développement.

    $ curl localhost:8998/sessions {"from":0,"total":0,"sessions":[]}

Étape 4 : exécuter un fragment de script simple dans un paragraphe de bloc-notes

Votre bloc-notes JupyterLab devrait désormais fonctionner avec votre terminal de développement. Saisissez le fragment de script ci-après dans votre bloc-notes et exécutez-le.

  1. Vérifiez que Spark fonctionne correctement. La commande suivante demande à Spark de calculer 1, puis d'imprimer la valeur.

    spark.sql("select 1").show()
  2. Vérifiez si AWS Glue Data Catalog l'intégration fonctionne. La commande suivante répertorie les tables de Data Catalog.

    spark.sql("show tables").show()
  3. Vérifiez qu'un simple fragment de script qui utilise AWS Glue les bibliothèques fonctionnent.

    Le script suivant utilise les métadonnées de la table persons_json dans AWS Glue Data Catalog pour créer un DynamicFrame à partir de vos exemples de données. Il affiche ensuite le nombre d'éléments et le schéma des données.

import sys from pyspark.context import SparkContext from awsglue.context import GlueContext # 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()

La sortie du script est la suivante.

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 | | |-- note: string | | |-- name: string | | |-- lang: 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

Résolution des problèmes

  • Au cours de l'installation de JupyterLab, si votre ordinateur se trouve derrière un proxy ou un pare-feu d'entreprise, vous risquez de rencontrer des erreurs HTTP et SSL en raison de profils de sécurité personnalisés gérés par les services informatiques de l'entreprise.

    Voici un exemple d'erreur typique qui se produit lorsque conda ne peut pas se connecter à ses propres référentiels :

    CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/main/win-64/current_repodata.json>

    Cela peut se produire parce que votre entreprise peut bloquer les connexions aux référentiels les plus utilisés en Python et dans JavaScript les communautés. Pour plus d'informations, consultez la section Problèmes d'installation sur le JupyterLab site Web.

  • Si vous obtenez un message d’erreur connection refused (connexion refusée) lorsque vous essayez de vous connecter à votre point de terminaison de développement, vous utilisez peut-être un point de terminaison de développement obsolète. Essayez de créer un nouveau point de terminaison de développement et de vous reconnecter.

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.