Didacticiel : écrire un script ETL dans AWS Glue pour Ray - 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.

Didacticiel : écrire un script ETL dans AWS Glue pour Ray

Ray vous permet d'écrire et de mettre à l'échelle des tâches distribuées de manière native en Python. AWS Glue pour Ray propose des environnements Ray sans serveur auxquels vous pouvez accéder à la fois à partir de tâches et de sessions interactives (les sessions interactives Ray sont en version préliminaire). Le système de tâches AWS Glue fournit un moyen cohérent de gérer et d'exécuter vos tâches, selon un calendrier, à partir d'un déclencheur ou de la console AWS Glue.

La combinaison de ces outils AWS Glue crée une puissante chaîne d'outils que vous pouvez utiliser pour les charges de travail d'extraction, transformation et chargement (ETL), un cas d'utilisation populaire pour AWS Glue. Dans ce didacticiel, vous apprendrez les bases de la mise en place de cette solution.

Nous prenons également en charge l'utilisation de AWS Glue pour Spark pour vos charges de travail ETL. Pour accéder à un didacticiel sur l'écriture d'un script AWS Glue pour Spark, consultez Tutoriel : Écrire un script AWS Glue for Spark. Pour plus d'informations sur les moteurs disponibles, consultez AWS Glue pour Spark et AWS Glue pour Ray. Ray est capable de traiter de nombreux types de tâches dans les domaines de l'analyse, du machine learning (ML) et du développement d'applications.

Dans ce didacticiel, vous allez extraire, transformer et charger un jeu de données CSV hébergé dans Amazon Simple Storage Service (Amazon S3). Vous allez commencer par le jeu de données d'enregistrement de voyages de l’agence New York City Taxi and Limousine Commission (TLC), qui est stocké dans un compartiment Amazon S3 public. Pour plus d'informations sur ce jeu de données, consultez le Registre des données ouvertes sur AWS.

Vous transformerez vos données à l'aide de transformations prédéfinies disponibles dans la bibliothèque Ray Data. Ray Data est une bibliothèque de préparation de jeux de données conçue par Ray et incluse par défaut dans les environnements AWS Glue pour Ray. Pour plus d'informations sur les bibliothèques incluses par défaut, consultez Modules fournis avec les tâches Ray. Vous écrirez ensuite vos données transformées dans un compartiment Amazon S3 que vous contrôlez.

Conditions préalables : pour ce didacticiel, vous avez besoin d'un compte AWS avec accès à AWS Glue et à Amazon S3.

Étape 1 : créer un compartiment dans Amazon S3 pour stocker vos données de sortie

Vous aurez besoin d'un compartiment Amazon S3 que vous contrôlez pour servir de récepteur pour les données créées dans ce didacticiel. Vous pouvez créer ce compartiment en procédant comme suit.

Note

Si vous souhaitez écrire vos données dans un compartiment existant que vous contrôlez, vous pouvez ignorer cette étape. Rappelez-vous de yourBucketName, le nom du compartiment existant, à utiliser dans les étapes suivantes.

Pour créer un compartiment pour la sortie de votre tâche Ray
  • Créez un compartiment en suivant les étapes décrites dans la section Créer un compartiment du Guide de l'utilisateur Amazon S3.

    • Lorsque vous choisissez un nom de compartiment, rappelez-vous de yourBucketName, auquel vous vous référerez dans les étapes ultérieures.

    • Pour les autres configurations, les paramètres suggérés fournis dans la console Amazon S3 devraient fonctionner correctement dans ce didacticiel.

    Par exemple, la boîte de dialogue de création de compartiments peut ressembler à ceci dans la console Amazon S3.

    Une boîte de dialogue de la console Amazon S3 utilisée pour configurer un nouveau compartiment.

Étape 2 : créer un rôle IAM pour votre politique pour votre tâche Ray

Votre tâche nécessitera un rôle AWS Identity and Access Management (IAM) avec les éléments suivants :

  • Autorisations accordées par la politique gérée AWSGlueServiceRole. Il s'agit des autorisations de base nécessaires pour exécuter une tâche AWS Glue.

  • Autorisations du niveau d'accès Read pour la ressource Amazon S3 nyc-tlc/*.

  • Autorisations du niveau d'accès Write pour la ressource Amazon S3 yourBucketName/*.

  • Une relation de confiance qui permet au principal glue.amazonaws.com d'assumer le rôle.

Vous pouvez créer ce rôle en procédant comme suit.

Pour créer un rôle IAM pour votre tâche AWS Glue pour Ray
Note

Vous pouvez créer un rôle IAM en suivant de nombreuses procédures différentes. Pour plus d'informations ou d'options sur le provisionnement des ressources IAM, consultez la documentation AWS Identity and Access Management.

  1. Créez une politique qui définit les autorisations Amazon S3 décrites précédemment en suivant les étapes décrites dans la section Création de politiques avec l'éditeur visuel du Guide de l'utilisateur IAM.

    • Lorsque vous sélectionnez un service, choisissez Amazon S3.

    • Lorsque vous sélectionnez des autorisations pour votre politique, associez les ensembles d'actions suivants pour les ressources suivantes (mentionnées précédemment) :

      • Autorisations du niveau d'accès de lecture pour la ressource Amazon S3 nyc-tlc/*.

      • Autorisations du niveau d'accès d'écriture pour la ressource Amazon S3 yourBucketName/*.

    • Lorsque vous sélectionnez un nom de politique, rappelez-vous de YourPolicyName, auquel vous vous référerez dans une étape ultérieure.

  2. Créez un rôle pour votre tâche AWS Glue pour Ray en suivant les étapes décrites dans la section Création d'un rôle pour un service AWS (console) du Guide de l'utilisateur IAM.

    • Lorsque vous sélectionnez une entité de confiance AWS, choisissez Glue. Cela renseignera automatiquement la relation de confiance nécessaire pour votre tâche.

    • Lorsque vous sélectionnez des politiques pour la politique d'autorisations, joignez les politiques suivantes :

      • AWSGlueServiceRole

      • YourPolicyName

    • Lorsque vous sélectionnez le nom de rôle, rappelez-vous de YourRoleName, auquel vous vous référerez dans les étapes suivantes.

Étape 3 : créer et exécuter une tâche AWS Glue pour Ray

Au cours de cette étape, vous créez une tâche AWS Glue à l'aide de la AWS Management Console, vous lui fournissez un exemple de script et vous exécutez la tâche. Lorsque vous créez une tâche, elle crée un emplacement dans la console où vous pouvez stocker, configurer et modifier votre script Ray. Pour plus d'informations sur la création de tâches, consultez Se connecter à la AWS Glue console.

Dans ce didacticiel, nous abordons le scénario ETL suivant : vous souhaitez lire les enregistrements de janvier 2022 du jeu de données d'enregistrement de voyages de l’agence New York City TLC, ajouter une nouvelle colonne (tip_rate) au jeu de données en combinant les données de colonnes existantes, puis supprimer un certain nombre de colonnes qui ne sont pas pertinentes pour votre analyse en cours, et enfin écrire les résultats dans yourBucketName. Le script Ray suivant exécute les étapes suivantes :

import ray import pandas from ray import data ray.init('auto') ds = ray.data.read_csv("s3://nyc-tlc/opendata_repo/opendata_webconvert/yellow/yellow_tripdata_2022-01.csv") # Add the given new column to the dataset and show the sample record after adding a new column ds = ds.add_column( "tip_rate", lambda df: df["tip_amount"] / df["total_amount"]) # Dropping few columns from the underlying Dataset ds = ds.drop_columns(["payment_type", "fare_amount", "extra", "tolls_amount", "improvement_surcharge"]) ds.write_parquet("s3://yourBucketName/ray/tutorial/output/")
Pour créer et exécuter une tâche AWS Glue pour Ray
  1. Dans la AWS Management Console, accédez à la page d'accueil AWS Glue.

  2. Dans le volet de navigation latéral, choisissez Tâches ETL.

  3. Dans Créer une tâche, choisissez Éditeur de script Ray, puis choisissez Créer, comme dans l'illustration suivante.

    Une boîte de dialogue dans la console AWS Glue utilisée pour créer une tâche Ray.
  4. Collez le texte complet du script dans le volet Script et remplacez le texte existant.

  5. Accédez aux Détails de la tâche et définissez la propriété Rôle IAM sur YourRoleName.

  6. Choisissez Enregistrer, puis Exécuter.

Étape 4 : inspecter votre sortie

Après avoir exécuté votre tâche AWS Glue, vous devez vérifier que la sortie correspond aux attentes de ce scénario. Pour ce faire, suivez la procédure suivante.

Pour valider si votre tâche Ray a été exécutée correctement
  1. Sur la page des détails de la tâche, accédez à Exécutions.

  2. Au bout de quelques minutes, vous devriez voir une exécution dont le statut d'exécution est Réussi.

  3. Accédez à la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/ et inspectez yourBucketName. Vous devez voir des fichiers écrits dans votre compartiment de sortie.

  4. Lisez les fichiers Parquet et vérifiez leur contenu. Vous pouvez le faire avec vos outils existants. Si vous n'avez pas de processus de validation des fichiers Parquet, vous pouvez le faire dans la console AWS Glue avec une session interactive AWS Glue, en utilisant Spark ou Ray (en version préliminaire).

    Dans une session interactive, vous avez accès aux bibliothèques Ray Data, Spark ou Pandas, qui sont fournies par défaut (en fonction du moteur que vous avez choisi). Pour vérifier le contenu de votre fichier, vous pouvez utiliser les méthodes d'inspection courantes disponibles dans ces bibliothèques (des méthodes comme count, schema et show). Pour plus d'informations sur les sessions interactives dans la console, consultez Using notebooks with AWS Glue Studio and AWS Glue.

    Comme vous avez confirmé que les fichiers ont été écrits dans le compartiment, vous pouvez affirmer avec une relative certitude que si votre sortie présente des problèmes, ils ne sont pas liés à la configuration IAM. Configurez votre session avec yourRoleName pour avoir accès aux fichiers concernés.

Si vous n'obtenez pas les résultats escomptés, consultez le contenu de dépannage de ce guide pour identifier la source de l'erreur et y remédier. Pour interpréter les statuts d'erreur d'exécution des tâches, consultez Statuts d'exécution de la tâche AWS Glue. Vous trouverez le contenu de dépannage dans le chapitre Résolution des problèmes de AWS Glue. Pour les erreurs spécifiques liées aux tâches Ray, consultez Dépannage des erreurs AWS Glue pour Ray liées aux journaux au chapitre de dépannage.

Étapes suivantes

Vous avez maintenant vu et exécuté un processus ETL utilisant AWS Glue pour Ray de bout en bout. Vous pouvez utiliser les ressources suivantes pour comprendre quels sont les outils fournis par AWS Glue pour Ray pour transformer et interpréter vos données à grande échelle.