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à.
Migliora i kernel con magic comandi in Studio EMR
Panoramica
EMRSupporto per Studio e EMR Notebook magic comandi. Magia comandi o magics, sono miglioramenti forniti dal IPython kernel per aiutarti a eseguire e analizzare i dati. IPythonè un ambiente shell interattivo creato con Python.
Amazon supporta EMR anche Sparkmagic, un pacchetto che fornisce kernel relativi a Spark (, PySpark SparkR e Scala) con specifiche magic comandi e che utilizza Livy sul cluster per inviare lavori Spark.
È possibile utilizzare… magic comandi purché nel notebook sia presente un kernel Python. EMR Allo stesso modo, qualsiasi kernel relativo a Spark supporta Sparkmagic comandi.
Magic comandi, chiamati anche magics, sono disponibili in due varietà:
-
Linea magics — Queste magic i comandi sono contrassegnati da un unico
%
prefisso e operano su un'unica riga di codice -
Cella magics — Questi magic i comandi sono contrassegnati da un doppio
%%
prefisso e funzionano su più righe di codice
Per tutti disponibili magics, vediElenco magic e Sparkmagic comandi.
Considerazioni e limitazioni
-
EMRServerless non supporta
%%sh
l'esecuzionespark-submit
. Non supporta i notebook EMR magics. -
Amazon EMR on EKS cluster non supporta Sparkmagic comandi per EMR Studio. Questo perché i kernel Spark che usi con gli endpoint gestiti sono integrati in Kubernetes e non sono supportati da Sparkmagic e Livy. È possibile impostare la configurazione Spark direttamente nell' SparkContext oggetto come soluzione alternativa, come dimostra l'esempio seguente.
spark.conf.set("spark.driver.maxResultSize", '6g')
-
I seguenti magic i comandi e le azioni sono proibiti da: AWS
-
%alias
-
%alias_magic
-
%automagic
-
%macro
-
Modifica
proxy_user
con%configure
-
Modifica
KERNEL_USERNAME
con%env
o%set_env
-
Elenco magic e Sparkmagic comandi
Usa i seguenti comandi per elencare le opzioni disponibili magic comandi:
-
%lsmagic
elenca tutti quelli attualmente disponibili magic funzioni. -
%%help
elenchi attualmente disponibili relativi a Spark magic funzioni fornite da Sparkmagic pacchetto.
Utilizza %%configure
per configurare Spark
Uno dei più utili Sparkmagic commands è il %%configure
comando che configura i parametri di creazione della sessione. Utilizzando le impostazioni conf
, è possibile configurare qualsiasi configurazione Spark menzionata nella documentazione di configurazione di Apache Spark
Esempio Aggiungi JAR file esterni ai EMR notebook dal repository Maven o Amazon S3
Puoi utilizzare il seguente approccio per aggiungere una dipendenza da JAR file esterna a qualsiasi kernel relativo a Spark supportato da 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" } }
Esempio : Configura Hudi
È possibile utilizzare l'editor di notebook per configurare il notebook in modo che utilizzi EMR 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" } }
Utilizza %%sh
per eseguire spark-submit
Il %%sh
magic esegue i comandi della shell in un sottoprocesso su un'istanza del cluster collegato. In genere, si utilizza uno dei kernel relativi a Spark per eseguire applicazioni Spark sul cluster collegato. Tuttavia, se vuoi usare un kernel Python per inviare un'applicazione Spark, puoi usare quanto segue magic, sostituendo il nome del bucket con il nome del bucket in lettere minuscole.
%%sh spark-submit --master yarn --deploy-mode cluster s3://
amzn-s3-demo-bucket
/test.py
In questo esempio, il cluster deve accedere alla posizione di s3://
o il comando avrà esito negativo.amzn-s3-demo-bucket
/test.py
È possibile utilizzare qualsiasi comando Linux con %%sh
magic. Se desideri eseguire Spark o YARN comandi, usa una delle seguenti opzioni per creare un utente emr-notebook
Hadoop e concedere all'utente le autorizzazioni per eseguire i comandi:
-
Puoi creare esplicitamente un nuovo utente eseguendo i seguenti comandi.
hadoop fs -mkdir /user/emr-notebook hadoop fs -chown emr-notebook /user/emr-notebook
-
Puoi attivare la rappresentazione dell'utente in Livy, che crea automaticamente l'utente. Per ulteriori informazioni, consulta Abilitazione della rappresentazione utente per monitorare l'attività dell'utente e dei processi Spark.
Utilizza %%display
per visualizzare i dataframe Spark
Puoi usare il %%display
magic per visualizzare un dataframe Spark. Per usare questo magic, esegui il seguente comando.
%%display df
Scegli di visualizzare i risultati in formato tabella, come illustrato nell'immagine seguente.
È inoltre possibile scegliere di visualizzare i dati con cinque tipi di grafici. Le opzioni includono grafici a torta, a dispersione, a linee, ad area e a barre.
Usa EMR Notebooks magics
Amazon EMR fornisce i seguenti EMR notebook magics che puoi usare con i kernel basati su Python3 e Spark:
-
%mount_workspace_dir
- Monta la directory WorkSpace sul cluster in modo da poter importare ed eseguire codice da altri file nel WorkSpaceNota
con
%mount_workspace_dir
, solo il kernel Python 3 può accedere ai file system locali. Gli executor Spark non avranno accesso alla directory montata con questo kernel. -
%umount_workspace_dir
- Smonta la directory WorkSpace dal cluster -
%generate_s3_download_url
- Genera un link per il download temporaneo nell'output del notebook per un oggetto Amazon S3
Prerequisiti
Prima di installare Notebooks EMR magics, completa le seguenti attività:
-
Assicurarsi che il proprio Ruolo di servizio per le EC2 istanze del cluster (profilo dell'EC2istanza) disponga dell'accesso in lettura per Amazon S3. Il
EMR_EC2_DefaultRole
con la policy gestitaAmazonElasticMapReduceforEC2Role
soddisfa questo requisito. Se si utilizza un ruolo o una policy personalizzati, assicurarsi che dispongano delle autorizzazioni S3 necessarie.Nota
EMRTaccuini magics viene eseguito su un cluster come utente del notebook e utilizza il profilo dell'EC2istanza per interagire con Amazon S3. Quando monti una directory Workspace su un EMR cluster, tutti i workspace e i EMR notebook autorizzati a collegarsi a quel cluster possono accedere alla directory montata.
Le directory sono montate in sola lettura per impostazione predefinita. Mentre
s3fs-fuse
egoofys
permettono il supporto in lettura-scrittura, consigliamo vivamente di non modificare i parametri di montaggio per montare le directory in modalità di lettura-scrittura. Se si permette l'accesso in scrittura, le modifiche apportate alla directory vengono scritte nel bucket S3. Per evitare l'eliminazione o la sovrascrittura accidentale, è possibile abilitare il controllo delle versioni per il bucket S3. Per ulteriori informazioni, consulta Utilizzo della funzione controllo delle versioni nei bucket S3. -
Esegui uno dei seguenti script sul cluster per installare le dipendenze per i notebook EMR magics. Per eseguire uno script, puoi Utilizzo di operazioni di bootstrap personalizzate o seguire le istruzioni in Esegui comandi e script su un EMR cluster Amazon quando hai già un cluster in esecuzione.
È possibile scegliere quale dipendenza installare. Sia s3fs-fuse che goofys
sono strumenti FUSE (Filesystem in Userspace) che consentono di montare un bucket Amazon S3 come file system locale su un cluster. Lo strumento offre POSIX un'esperienza simile a. s3fs
Logoofys
strumento è una buona scelta quando si preferiscono le prestazioni rispetto a un POSIX file system conforme.La serie Amazon EMR 7.x utilizza Amazon Linux 2023, che non supporta i EPEL repository. Se utilizzi Amazon EMR 7.x, segui le istruzioni di GitHubs3fs-fuse
per l'installazione. s3fs-fuse
Se usi la serie 5.x o 6.x, usa i seguenti comandi per l'installazione.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
OPPURE
#!/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
Installa i notebook EMR magics
Nota
Con le EMR versioni di Amazon dalla 6.0 alla 6.9.0 e dalla 5.0 alla 5.36.0, sono supportate solo le versioni emr-notebooks-magics
del pacchetto 0.2.0 e successive %mount_workspace_dir
magic.
Completa i seguenti passaggi per installare i notebook EMR magics.
-
Nel notebook, esegui i comandi seguenti per installare il pacchetto
emr-notebooks-magics
. %pip install boto3 --upgrade %pip install botocore --upgrade %pip install emr-notebooks-magics --upgrade
-
Riavvia il kernel per caricare i notebook EMR magics.
-
Verificare l'installazione con il seguente comando, che dovrebbe visualizzare il testo della guida di output per
%mount_workspace_dir
.%mount_workspace_dir?
Montare una directory WorkSpace con %mount_workspace_dir
Il %mount_workspace_dir
magic consente di montare la directory Workspace sul EMR cluster in modo da poter importare ed eseguire altri file, moduli o pacchetti memorizzati nella directory.
L'esempio seguente monta l'intera directory Workspace su un cluster e specifica l'opzione
argomento per usare goofys per montare la cartella.<--fuse-type>
%mount_workspace_dir .
<--fuse-type goofys>
Per verificare che la directory WorkSpace sia montata, utilizzare l'esempio seguente per visualizzare l'attuale directory di lavoro con il comando ls
. L'output dovrebbe visualizzare tutti i file nel WorkSpace.
%%sh ls
Una volta che sono state apportate le modifiche nel WorkSpace, puoi smontare la directory del WorkSpace con il seguente comando:
Nota
La directory WorkSpace rimane montata sul cluster anche quando il WorkSpace viene arrestato o distaccato. È necessario smontare esplicitamente la directory di WorkSpace.
%umount_workspace_dir
Scaricare un oggetto Amazon S3 con %generate_s3_download_url
Il generate_s3_download_url
comando crea un predefinito URL per un oggetto archiviato in Amazon S3. Puoi usare il prefirmato URL per scaricare l'oggetto sul tuo computer locale. Ad esempio, potresti generate_s3_download_url
eseguire il download del risultato di una SQL query che il tuo codice scrive su Amazon S3.
Per impostazione predefinita, il valore predefinito URL è valido per 60 minuti. È possibile modificare il tempo di scadenza specificando un numero di secondi per il flag --expires-in
. Ad esempio, --expires-in 1800
crea un URL valore valido per 30 minuti.
L'esempio seguente genera un collegamento per il download di un oggetto specificando il percorso completo di Amazon S3:
.s3://EXAMPLE-DOC-BUCKET/path/to/my/object
%generate_s3_download_url
s3://EXAMPLE-DOC-BUCKET/path/to/my/object
Per ulteriori informazioni sull'uso di generate_s3_download_url
, eseguire il comando di seguito per visualizzare il testo della guida.
%generate_s3_download_url?
Gestione di un notebook in modalità headless con %execute_notebook
Con %execute_notebook
magic, puoi far funzionare un altro notebook in modalità headless e visualizzare l'output di ogni cella che hai eseguito. Questo magic richiede autorizzazioni aggiuntive per il ruolo dell'istanza EC2 condiviso da Amazon EMR e Amazon. Per ulteriori dettagli su come concedere autorizzazioni aggiuntive, esegui il comando %execute_notebook?
.
Durante un processo di lunga durata, il sistema potrebbe andare in modalità di sospensione a causa dell'inattività o perdere temporaneamente la connettività Internet. Ciò potrebbe interrompere la connessione tra il browser e il server Jupyter. In questo caso, potresti perdere l'output delle celle che hai eseguito e inviato dal server Jupyter.
Se si utilizza il notebook in modalità headless con %execute_notebook
magic, EMR Notebooks acquisisce l'output dalle celle in funzione, anche in caso di interruzione della rete locale. EMRNotebooks salva l'output in modo incrementale in un nuovo notebook con lo stesso nome del notebook in uso. EMRNotebooks posiziona quindi il taccuino in una nuova cartella all'interno dell'area di lavoro. Le esecuzioni headless avvengono sullo stesso cluster e utilizzano il ruolo di servizio EMR_Notebook_DefaultRole
, ma argomenti aggiuntivi possono modificare i valori predefiniti.
Per eseguire un notebook in modalità headless, usa il seguente comando:
%execute_notebook
<relative-file-path>
Per specificare un ID cluster e il ruolo di servizio per un'esecuzione headless, usa il seguente comando:
%execute_notebook
<notebook_name>
.ipynb --cluster-id <emr-cluster-id> --service-role <emr-notebook-service-role>
Quando Amazon EMR e Amazon EC2 condividono un ruolo di istanza, il ruolo richiede le seguenti autorizzazioni aggiuntive:
{ "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" } ] }
Nota
Per utilizzare %execute_notebook
magic, installa il emr-notebooks-magics
pacchetto, versione 0.2.3 o successiva.