Préparez des données à grande échelle dans Amazon SageMaker Studio à l'aide de sessions interactives AWS Glue sans serveur PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Préparez des données à grande échelle dans Amazon SageMaker Studio à l'aide de sessions interactives AWS Glue sans serveur

Amazon SageMakerStudio est le premier environnement de développement entièrement intégré (IDE) pour l'apprentissage automatique (ML). Il fournit une interface visuelle Web unique dans laquelle vous pouvez effectuer toutes les étapes de développement ML, y compris la préparation des données et la création, la formation et le déploiement de modèles.

Colle AWS est un service d'intégration de données sans serveur qui facilite la découverte, la préparation et la combinaison de données pour l'analyse, le ML et le développement d'applications. AWS Glue vous permet de collecter, transformer, nettoyer et préparer en toute transparence des données pour le stockage dans vos lacs de données et pipelines de données à l'aide de diverses fonctionnalités, notamment transformations intégrées.

Les ingénieurs de données et les data scientists peuvent désormais préparer de manière interactive des données à grande échelle à l'aide de l'intégration intégrée de leur bloc-notes Studio avec des sessions Spark sans serveur gérées par AWS Glue. Démarrage en quelques secondes et arrêt automatique du calcul en cas d'inactivité, Sessions interactives AWS Glue fournir un backend Spark à la demande, hautement évolutif et sans serveur pour réaliser une préparation de données évolutive dans Studio. Les avantages notables de l'utilisation des sessions interactives AWS Glue sur les blocs-notes Studio incluent :

  • Aucun cluster à provisionner ou à gérer
  • Aucun cluster inactif à payer
  • Aucune configuration initiale requise
  • Pas de conflit de ressources pour le même environnement de développement
  • Le même environnement d'exécution et la même plate-forme Spark sans serveur que les tâches d'extraction, de transformation et de chargement (ETL) AWS Glue

Dans cet article, nous vous montrons comment préparer des données à grande échelle dans Studio à l'aide de sessions interactives AWS Glue sans serveur.

Vue d'ensemble de la solution

Pour mettre en œuvre cette solution, vous devez effectuer les étapes de haut niveau suivantes :

  1. Mettez à jour votre Gestion des identités et des accès AWS (IAM) autorisations de rôle.
  2. Lancez un noyau de session interactif AWS Glue.
  3. Configurez votre session interactive.
  4. Personnalisez votre session interactive et exécutez une charge de travail de préparation de données évolutive.

Mettre à jour les autorisations de votre rôle IAM

Pour commencer, vous devez mettre à jour le rôle d'exécution IAM de votre utilisateur Studio avec les autorisations requises. Pour des instructions détaillées, reportez-vous à Autorisations pour les sessions interactives Glue dans SageMaker Studio.

Vous ajoutez d'abord les stratégies gérées à votre rôle d'exécution :

  1. Sur la console IAM, choisissez Rôles dans le volet de navigation.
  2. Recherchez le rôle d'exécution Studio que vous utiliserez et choisissez le nom du rôle pour accéder à la page de résumé du rôle.
  3. Sur le Permissions onglet, sur le Ajouter des autorisations menu, choisissez Joindre des politiques.
  4. Sélectionnez les stratégies gérées AmazonSageMakerFullAccess ainsi que le AwsGlueSessionUserRestrictedServiceRole
  5. Selectionnez Joindre des politiques.
    La page de résumé affiche vos stratégies gérées nouvellement ajoutées. Maintenant, vous ajoutez une stratégie personnalisée et l'attachez à votre rôle d'exécution.
  6. Sur le Ajouter des autorisations menu, choisissez Créer une politique en ligne.
  7. Sur le JSON , entrez la stratégie suivante :
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "iam:GetRole",
                    "iam:PassRole",
                    "sts:GetCallerIdentity"
                ],
                "Resource": "*"
            }
        ]
    }

  8. Modifiez la relation d'approbation de votre rôle :
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": [
                        "glue.amazonaws.com",
                        "sagemaker.amazonaws.com"
                    ]
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }

Lancer un noyau de session interactif AWS Glue

Si vous avez déjà des utilisateurs existants dans votre domaine Studio, vous devrez peut-être les avoir arrêter et redémarrer leur serveur Jupyter pour récupérer les nouvelles images du noyau du bloc-notes.

Lors du rechargement, vous pouvez créer un nouveau bloc-notes Studio et sélectionnez votre noyau préféré. Le intégré SparkAnalytics 1.0 L'image devrait maintenant être disponible et vous pouvez choisir votre noyau AWS Glue préféré (Colle Scala Étincelle or Colle PySpark).

Configurez votre session interactive

Vous pouvez facilement configurer votre session interactive AWS Glue avec des magies de cellule de bloc-notes avant l'initialisation. Les magies sont de petites commandes préfixées par % au début des cellules Jupyter qui fournissent des raccourcis pour contrôler l'environnement. Dans les sessions interactives AWS Glue, les magies sont utilisées pour tous les besoins de configuration, notamment :

  • %Région – La région AWS dans laquelle initialiser une session. La valeur par défaut est la région Studio.
  • %iam_role – L'ARN du rôle IAM avec lequel exécuter votre session. La valeur par défaut est le rôle d'exécution SageMaker de l'utilisateur.
  • %worker_type - L' Type de travail AWS Glue. La valeur par défaut est standard.
  • %number_of_workers – Le nombre de nœuds de calcul alloués lors de l'exécution d'un travail. La valeur par défaut est cinq.
  • %délai d'inactivité – Le nombre de minutes d'inactivité après lesquelles une session expirera. La valeur par défaut est de 2,880 XNUMX minutes.
  • %additional_python_modules – Une liste séparée par des virgules de modules Python supplémentaires à inclure dans votre cluster. Cela peut provenir de PyPi ou Service de stockage simple Amazon (Amazon S3).
  • %% configure – Un dictionnaire au format JSON composé de Paramètres de configuration spécifiques à AWS Glue pour une séance.

Pour une liste complète des paramètres magiques configurables pour ce noyau, utilisez le %help magie dans votre cahier.

Votre session interactive AWS Glue ne démarrera pas tant que la première cellule non magique ne sera pas exécutée.

Personnalisez votre session interactive et exécutez une charge de travail de préparation des données

À titre d'exemple, les cellules de bloc-notes suivantes montrent comment vous pouvez personnaliser votre session interactive AWS Glue et exécuter une charge de travail de préparation de données évolutive. Dans cet exemple, nous effectuons une tâche ETL pour agréger les données sur la qualité de l'air pour une ville donnée, en les regroupant par heure de la journée.

Nous configurons notre session pour enregistrer nos journaux Spark dans un compartiment S3 pour le débogage en temps réel, que nous verrons plus loin dans cet article. Assurez-vous que le iam_role qui exécute votre session AWS Glue dispose d'un accès en écriture au compartiment S3 spécifié.

%help

%session_id_prefix air-analysis-
%glue_version 3.0
%idle_timeout 60
%%configure
{
"--enable-spark-ui": "true",
"--spark-event-logs-path": "s3://<BUCKET>/gis-spark-logs/"
}

Ensuite, nous chargeons notre ensemble de données directement depuis Amazon S3. Alternativement, vous pourriez charger des données à l'aide de votre catalogue de données AWS Glue.

from pyspark.sql.functions import split, lower, hour
print(spark.version)
day_to_analyze = "2022-01-05"
df = spark.read.json(f"s3://openaq-fetches/realtime-gzipped/{day_to_analyze}/1641409725.ndjson.gz")
df_air = spark.read.schema(df.schema).json(f"s3://openaq-fetches/realtime-gzipped/{day_to_analyze}/*")

Enfin, nous écrivons notre ensemble de données transformé dans un emplacement de compartiment de sortie que nous avons défini :

df_city = df_air.filter(lower((df_air.city)).contains('delhi')).filter(df_air.parameter == "no2").cache()
df_avg = df_city.withColumn("Hour", hour(df_city.date.utc)).groupBy("Hour").avg("value").withColumnRenamed("avg(value)", "no2_avg")
df_avg.sort("Hour").show()

# Examples of reading / writing to other data stores: 
# https://github.com/aws-samples/aws-glue-samples/tree/master/examples/notebooks

df_avg.write.parquet(f"s3://<BUCKET>/{day_to_analyze}.parquet")

Une fois que vous avez terminé votre travail, vous pouvez mettre fin immédiatement à votre session interactive AWS Glue en fermant simplement le noyau du bloc-notes Studio, ou vous pouvez utiliser le %stop_session la magie.

Débogage et interface utilisateur Spark

Dans l'exemple précédent, nous avons spécifié le ”--enable-spark-ui”: “true” argument avec un "--spark-event-logs-path": location. Cela configure notre session AWS Glue pour enregistrer les journaux de sessions afin que nous puissions utiliser une interface utilisateur Spark pour surveiller et déboguer notre travail AWS Glue en temps réel.

Pour connaître le processus de lancement et de lecture de ces journaux Spark, reportez-vous à Lancement du serveur d'historique Spark. Dans la capture d'écran suivante, nous avons lancé un conteneur Docker local autorisé à lire le compartiment S3 contenant nos journaux. En option, vous pouvez héberger un Cloud de calcul élastique Amazon (Amazon EC2) pour ce faire, comme décrit dans la documentation liée précédente.

Préparez des données à grande échelle dans Amazon SageMaker Studio à l'aide de sessions interactives AWS Glue sans serveur PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Prix

Lorsque vous utilisez des sessions interactives AWS Glue sur des blocs-notes Studio, vous êtes facturé séparément pour l'utilisation des ressources sur les blocs-notes AWS Glue et Studio.

AWS facture les sessions interactives AWS Glue en fonction de la durée d'activité de la session et du nombre d'unités de traitement de données (DPU) utilisées. Un tarif horaire vous est facturé pour le nombre de DPU utilisés pour exécuter vos charges de travail, facturé par tranches de 1 seconde. Les sessions interactives AWS Glue attribuent par défaut 5 DPU et nécessitent un minimum de 2 DPU. Il y a également une durée de facturation minimale d'une minute pour chaque session interactive. Pour voir les tarifs et les exemples de tarification AWS Glue, ou pour estimer vos coûts à l'aide du calculateur de tarification AWS, consultez Tarification AWS Glue.

Votre bloc-notes Studio s'exécute sur une instance EC2 et vous êtes facturé pour le type d'instance que vous choisissez, en fonction de la durée d'utilisation. Studio vous attribue un type d'instance EC2 par défaut de ml-t3-medium lorsque vous sélectionnez le SparkAnalytics image et noyau associé. Vous pouvez modifier le type d'instance de votre bloc-notes Studio en fonction de votre charge de travail. Pour plus d'informations sur les tarifs de SageMaker Studio, voir Tarification d'Amazon SageMaker.

Conclusion

L'intégration native des blocs-notes Studio avec les sessions interactives AWS Glue facilite la préparation transparente et évolutive des données sans serveur pour les data scientists et les ingénieurs de données. Nous vous encourageons à essayer cette nouvelle fonctionnalité dans Studio !

See Préparer les données à l'aide des sessions interactives AWS Glue pour plus d'information.


À propos des auteurs

Sean MorganSean Morgan est architecte senior de solutions ML chez AWS. Il a de l'expérience dans les domaines des semi-conducteurs et de la recherche universitaire, et utilise son expérience pour aider les clients à atteindre leurs objectifs sur AWS. Pendant son temps libre, Sean est un contributeur/mainteneur open source activé et est le responsable du groupe d'intérêt spécial pour TensorFlow Addons.

Préparez des données à grande échelle dans Amazon SageMaker Studio à l'aide de sessions interactives AWS Glue sans serveur PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Sumedha Swamy est chef de produit principal chez Amazon Web Services. Il dirige l'équipe SageMaker Studio pour l'intégrer dans l'IDE de choix pour les workflows interactifs de science des données et d'ingénierie des données. Il a passé les 15 dernières années à créer des produits grand public et d'entreprise axés sur le client à l'aide de l'apprentissage automatique. Pendant son temps libre, il aime photographier l'incroyable géologie du sud-ouest américain.

Horodatage:

Plus de Apprentissage automatique AWS