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.
Améliorez les noyaux avec magic commandes dans EMR Studio
Présentation
Support pour EMR Studio et EMR Notebooks magic commandes. Commande magique des commandes, ou magics, sont des améliorations apportées par le IPython noyau pour vous aider à exécuter et à analyser des données. IPythonest un environnement shell interactif construit avec Python.
Amazon EMR prend également en charge Sparkmagic, un package qui fournit aux noyaux liés à Spark (noyaux PySpark SparkR et Scala) des magic commandes et qui utilise Livy sur le cluster pour soumettre des tâches Spark.
Vous pouvez utiliser … magic commandes tant que vous avez un noyau Python dans votre bloc-notes EMR. De même, tout noyau lié à Spark prend en charge Sparkmagic commandes.
Magic commandes, également appelées magics, existent en deux variétés :
-
Ligne magics — Ceux-ci magic les commandes sont désignées par un seul
%
préfixe et fonctionnent sur une seule ligne de code -
Cellule magics — Ceux-ci magic les commandes sont désignées par un double
%%
préfixe et fonctionnent sur plusieurs lignes de code
Pour tous disponibles magics, tu voisListe magic and Sparkmagic commands.
Considérations et restrictions
-
EMR sans serveur ne prend pas en charge
%%sh
pour exécuterspark-submit
. Il ne prend pas en charge les EMR Notebooks magicLes -
Les clusters Amazon EMR sur EKS ne sont pas pris en charge Sparkmagic commandes pour EMR Studio. Cela est dû au fait que les noyaux Spark que vous utilisez avec des points de terminaison gérés sont intégrés à Kubernetes et ne sont pas pris en charge par Sparkmagic et Livy. Vous pouvez définir la configuration Spark directement dans l' SparkContext objet pour contourner le problème, comme le montre l'exemple suivant.
spark.conf.set("spark.driver.maxResultSize", '6g')
-
Procédez comme suit : magic les commandes et les actions sont interdites par AWS :
-
%alias
-
%alias_magic
-
%automagic
-
%macro
-
Modifier
proxy_user
avec%configure
-
Modifier
KERNEL_USERNAME
avec%env
ou%set_env
-
Liste magic and Sparkmagic commands
Utilisez les commandes suivantes pour répertorier les magic commandes :
-
%lsmagic
répertorie tout ce qui est actuellement disponible magic fonctions. -
%%help
répertorie les informations actuellement disponibles liées à Spark magic fonctions fournies par le Sparkmagic colis.
Utiliser %%configure
pour configurer Spark
L'un des plus utiles Sparkmagic commands est la %%configure
commande qui configure les paramètres de création de session. Pour les paramètres conf
, vous pouvez configurer n'importe quelle configuration Spark mentionnée dans la documentation de configuration d'Apache Spark
Exemple Ajouter un fichier JAR externe à EMR Notebooks depuis le référentiel Maven ou Amazon S3
Vous pouvez utiliser l'approche suivante pour ajouter une dépendance à un fichier JAR externe à tout noyau lié à Spark pris en charge par Sparkmagic.
%%configure -f {"conf": { "spark.jars.packages": "com.jsuereth:scala-arm_2.11:2.0,ml.combust.bundle:bundle-ml_2.11:0.13.0,com.databricks:dbutils-api_2.11:0.0.3", "spark.jars": "s3://
amzn-s3-demo-bucket
/my-jar.jar" } }
Exemple : Configurer Hudi
Vous pouvez utiliser l'éditeur de bloc-notes pour configurer votre bloc-notes EMR afin d'utiliser Hudi.
%%configure { "conf": { "spark.jars": "hdfs://apps/hudi/lib/hudi-spark-bundle.jar,hdfs:///apps/hudi/lib/spark-spark-avro.jar", "spark.serializer": "org.apache.spark.serializer.KryoSerializer", "spark.sql.hive.convertMetastoreParquet":"false" } }
Utiliser %%sh
pour exécuter spark-submit
La %%sh
magic exécute des commandes shell dans un sous-processus sur une instance de votre cluster attaché. Généralement, vous utilisez l'un des noyaux liés à Spark pour exécuter des applications Spark sur votre cluster attaché. Toutefois, si vous souhaitez utiliser un noyau Python pour soumettre une application Spark, vous pouvez utiliser ce qui suit magic, en remplaçant le nom du bucket par le nom de votre bucket en minuscules.
%%sh spark-submit --master yarn --deploy-mode cluster s3://
amzn-s3-demo-bucket
/test.py
Dans cet exemple, le cluster doit accéder à l'emplacement de s3://
, sinon la commande échouera.amzn-s3-demo-bucket
/test.py
Vous pouvez utiliser n'importe quelle commande Linux avec %%sh
magic. Si vous souhaitez exécuter des commandes Spark ou YARN, utilisez l'une des options suivantes pour créer un utilisateur emr-notebook
Hadoop et accordez-lui les autorisations nécessaires pour exécuter les commandes :
-
Vous pouvez créer un nouvel utilisateur de manière explicite en exécutant les commandes suivantes.
hadoop fs -mkdir /user/emr-notebook hadoop fs -chown emr-notebook /user/emr-notebook
-
Vous pouvez activer une identité utilisateur dans Livy, qui créera automatiquement l'utilisateur. Pour plus d’informations, consultez Activation de l'emprunt d'identité pour contrôler l'activité des utilisateurs et des tâches Spark.
Utiliser %%display
pour visualiser les dataframes Spark
Vous pouvez utiliser %%display
magic pour visualiser une trame de données Spark. Pour l'utiliser magic, exécutez la commande suivante.
%%display df
Choisissez d'afficher les résultats sous forme de tableau, comme le montre l'image suivante.

Vous pouvez également choisir de visualiser vos données à l'aide de cinq types de graphiques. Vous avez le choix entre des diagrammes circulaires, des diagrammes de dispersion, des diagrammes linéaires, des diagrammes de surface et des diagrammes à barres.

Utiliser les notebooks EMR magics
Amazon EMR fournit les Notebooks EMR suivants magicque vous pouvez utiliser avec les noyaux basés sur Python3 et Spark :
-
%mount_workspace_dir
: monte votre répertoire Workspace sur votre cluster afin que vous puissiez importer et exécuter du code à partir d'autres fichiers de votre WorkspaceNote
Avec
%mount_workspace_dir
, seul le noyau Python 3 peut accéder à vos systèmes de fichiers locaux. Les exécuteurs Spark n'auront pas accès au répertoire monté avec ce noyau. -
%umount_workspace_dir
: démonte votre répertoire Workspace de votre cluster -
%generate_s3_download_url
: génère un lien de téléchargement temporaire dans la sortie de votre bloc-notes pour un objet Amazon S3
Prérequis
Avant d'installer EMR Notebooks magics, effectuez les tâches suivantes :
-
Assurez-vous que votre Rôle de service pour les EC2 instances de cluster (profil d'EC2instance) dispose d'un accès en lecture pour Amazon S3. Le
EMR_EC2_DefaultRole
avec la politique géréeAmazonElasticMapReduceforEC2Role
répond à cette exigence. Si vous utilisez une politique ou un rôle personnalisés, assurez-vous qu'ils disposent des autorisations S3 nécessaires.Note
Blocs-notes EMR magics s'exécutent sur un cluster en tant qu'utilisateur du bloc-notes et utilisent le profil d' EC2instance pour interagir avec Amazon S3. Lorsque vous montez un répertoire Workspace sur un cluster EMR, tous les Workspaces et blocs-notes EMR autorisés à se connecter à ce cluster peuvent accéder au répertoire monté.
Les répertoires sont montés en lecture seule par défaut. Bien que
s3fs-fuse
etgoofys
autorisent les montages en lecture-écriture, nous vous recommandons vivement de ne pas modifier les paramètres de montage pour monter des répertoires en mode lecture-écriture. Si vous autorisez l'accès en écriture, toutes les modifications apportées au répertoire sont enregistrées dans le compartiment S3. Pour éviter la suppression ou le remplacement accidentels, vous pouvez activer la gestion des versions pour votre compartiment S3. Pour plus d'informations, consultez Utilisation de la gestion des versions dans les compartiments S3. -
Exécutez l'un des scripts suivants sur votre cluster pour installer les dépendances des EMR Notebooks magicLes Pour exécuter un script, vous pouvez Utilisation d'actions d'amorçage personnalisées ou suivre les instructions de la section Exécuter des commandes et des scripts sur un cluster Amazon EMR lorsque vous avez déjà un cluster en cours d'exécution.
Vous pouvez choisir la dépendance à installer. s3fs-fuse
et goofys sont tous deux des outils FUSE (système de fichiers dans l'espace utilisateur) qui vous permettent de monter un compartiment Amazon S3 en tant que système de fichiers local sur un cluster. L'outil s3fs
fournit une expérience similaire à POSIX. L'outilgoofys
est un bon choix lorsque vous préférez les performances à un système de fichiers compatible POSIX.La série Amazon EMR 7.x utilise Amazon Linux 2023, qui ne prend pas en charge les référentiels EPEL. Si vous utilisez Amazon EMR 7.x, suivez les instructions d'installation de GitHubs3fs-fuse
. s3fs-fuse
Si vous utilisez les séries 5.x ou 6.x, utilisez les commandes suivantes pour effectuer l'installation.s3fs-fuse
#!/bin/sh # Install the s3fs dependency for EMR Notebooks magics sudo amazon-linux-extras install epel -y sudo yum install s3fs-fuse -y
OU
#!/bin/sh # Install the goofys dependency for EMR Notebooks magics sudo wget https://github.com/kahing/goofys/releases/latest/download/goofys -P /usr/bin/ sudo chmod ugo+x /usr/bin/goofys
Installez EMR Notebooks magics
Note
Avec les versions 6.0 à 6.9.0 et 5.0 à 5.36.0 d'Amazon EMR, seules les versions 0.2.0 et supérieures emr-notebooks-magics
du package sont prises en charge %mount_workspace_dir
magic.
Procédez comme suit pour installer EMR Notebooks magicLes
-
Dans votre bloc-notes, exécutez les commandes suivantes pour installer le package
emr-notebooks-magics
. %pip install boto3 --upgrade %pip install botocore --upgrade %pip install emr-notebooks-magics --upgrade
-
Redémarrez votre noyau pour charger les EMR Notebooks magicLes
-
Vérifiez votre installation à l'aide de la commande suivante, qui devrait afficher le texte d'aide de sortie pour
%mount_workspace_dir
.%mount_workspace_dir?
Montez un répertoire Workspace avec %mount_workspace_dir
La %mount_workspace_dir
magic vous permet de monter votre répertoire Workspace sur votre cluster EMR afin de pouvoir importer et exécuter d'autres fichiers, modules ou packages stockés dans votre répertoire.
L'exemple suivant monte l'intégralité du répertoire Workspace sur un cluster et spécifie l'argument facultatif
qui permet d'utiliser goofys pour monter le répertoire.<--fuse-type>
%mount_workspace_dir .
<--fuse-type goofys>
Pour vérifier que votre répertoire Workspace est monté, utilisez l'exemple suivant pour afficher le répertoire de travail actuel avec la commande ls
. La sortie doit afficher tous les fichiers de votre Workspace.
%%sh ls
Lorsque vous avez terminé d'apporter des modifications à votre Workspace, vous pouvez démonter le répertoire du Workspace à l'aide de la commande suivante :
Note
Le répertoire de votre Workspace reste monté sur votre cluster même lorsque le Workspace est arrêté ou détaché. Vous devez démonter explicitement votre répertoire Workspace.
%umount_workspace_dir
Télécharger un objet Amazon S3 avec %generate_s3_download_url
La commande generate_s3_download_url
crée une URL présignée pour un objet stocké dans Amazon S3. Vous pouvez utiliser l'URL présignée pour télécharger l'objet sur votre ordinateur local. Par exemple, vous pouvez exécuter generate_s3_download_url
pour télécharger le résultat d'une requête SQL que votre code écrit sur Amazon S3.
L'URL présignée est valide pendant 60 minutes par défaut. Vous pouvez modifier le délai d'expiration en spécifiant un nombre de secondes pour le drapeau --expires-in
. Par exemple, --expires-in 1800
crée une URL valide pendant 30 minutes.
L'exemple suivant génère un lien de téléchargement pour un objet en spécifiant le chemin complet d'Amazon S3 :
.s3://EXAMPLE-DOC-BUCKET/path/to/my/object
%generate_s3_download_url
s3://EXAMPLE-DOC-BUCKET/path/to/my/object
Pour en savoir plus sur l'utilisation de generate_s3_download_url
, exécutez la commande suivante pour afficher le texte d'aide.
%generate_s3_download_url?
Exécuter un bloc-notes en mode sans tête avec %execute_notebook
Avec %execute_notebook
magic, vous pouvez exécuter un autre bloc-notes en mode headless et afficher le résultat de chaque cellule que vous avez exécutée. Cette magic nécessite des autorisations supplémentaires pour le rôle d'instance partagé par Amazon EMR et Amazon EC2 . Pour plus de détails sur la façon d'accorder des autorisations supplémentaires, exécutez la commande%execute_notebook?
.
Au cours d'un travail de longue durée, votre système peut se mettre en veille pour cause d'inactivité ou perdre temporairement la connexion Internet. Cela peut perturber la connexion entre votre navigateur et le serveur Jupyter. Dans ce cas, vous risquez de perdre le résultat des cellules que vous avez exécutées et envoyées depuis le serveur Jupyter.
Si vous utilisez le bloc-notes en mode headless avec %execute_notebook
magic, EMR Notebooks capture les données des cellules qui ont fonctionné, même si le réseau local est perturbé. EMR Notebooks enregistre la sortie de manière incrémentielle dans un nouveau bloc-notes portant le même nom que le bloc-notes que vous avez utilisé. EMR Notebooks place ensuite le bloc-notes dans un nouveau dossier au sein du Workspace. Les exécutions sans tête se produisent sur le même cluster et utilisent le rôle de service EMR_Notebook_DefaultRole
, mais des arguments supplémentaires peuvent modifier les valeurs par défaut.
Pour exécuter un bloc-notes en mode sans tête, utilisez la commande suivante :
%execute_notebook
<relative-file-path>
Pour spécifier un ID de cluster et un rôle de service pour une exécution en mode sans tête, utilisez la commande suivante :
%execute_notebook
<notebook_name>
.ipynb --cluster-id <emr-cluster-id> --service-role <emr-notebook-service-role>
Lorsqu'Amazon EMR et Amazon EC2 partagent un rôle d'instance, ce rôle nécessite les autorisations supplémentaires suivantes :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticmapreduce:StartNotebookExecution", "elasticmapreduce:DescribeNotebookExecution", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::<AccoundId>:role/EMR_Notebooks_DefaultRole" } ] }
Note
Pour utiliser %execute_notebook
magic, installez le emr-notebooks-magics
package, version 0.2.3 ou supérieure.