Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verbessern Sie die Kernel mit magic commands
Übersicht
EMRUnterstützung für Studio und EMR Notebooks magic Befehle. Magie Befehle, oder magics sind Erweiterungen, die der IPython Kernel bereitstellt, um Sie beim Ausführen und Analysieren von Daten zu unterstützen. IPythonist eine interaktive Shell-Umgebung, die mit Python erstellt wurde.
Amazon unterstützt EMR auch Sparkmagic, ein Paket, das Spark-bezogene Kernel (PySpark, SparkR- und Scala-Kernel) mit spezifischen magic Befehle und das Livy auf dem Cluster verwendet, um Spark-Jobs zu senden.
Sie können Folgendes verwenden … magic Befehle, solange Sie einen Python-Kernel in Ihrem EMR Notizbuch haben. In ähnlicher Weise unterstützt jeder SPARK-bezogene Kernel Sparkmagic Befehle.
Magic Befehle, auch genannt magics, gibt es in zwei Varianten:
-
Linie magics — Diese magic Befehle werden mit einem einzigen
%
Präfix gekennzeichnet und funktionieren mit einer einzigen Codezeile -
Zelle magics — Diese magic Befehle sind mit einem doppelten
%%
Präfix gekennzeichnet und funktionieren auf mehreren Codezeilen
Für alle verfügbaren magics, sieheAuflisten magic and Sparkmagic commands.
Überlegungen und Einschränkungen
-
EMRServerless unterstützt
%%sh
das Ausführenspark-submit
nicht. Notebooks werden nicht unterstützt EMR magic-Geräte. -
Amazon EMR on EKS Clusters unterstützt nicht Sparkmagic Befehle für EMR Studio. Das liegt daran, dass Spark-Kernel, die Sie mit verwalteten Endpunkten verwenden, in Kubernetes integriert sind und nicht unterstützt werden von Sparkmagic und Livy. Um das Problem zu umgehen, können Sie die Spark-Konfiguration direkt in das SparkContext Objekt einfügen, wie das folgende Beispiel zeigt.
spark.conf.set("spark.driver.maxResultSize", '6g')
-
Folgendes magic Befehle und Aktionen sind verboten von AWS:
-
%alias
-
%alias_magic
-
%automagic
-
%macro
-
Ändern von
proxy_user
mit%configure
-
Ändern von
KERNEL_USERNAME
mit%env
oder%set_env
-
Auflisten magic and Sparkmagic commands
Verwenden Sie die folgenden Befehle, um die verfügbaren aufzulisten magic Befehle:
-
%lsmagic
listet alle derzeit verfügbaren magic Funktionen. -
%%help
listet derzeit verfügbare SPARK-bezogene magic Funktionen, die bereitgestellt werden von Sparkmagic Paket.
%%configure
wird verwendet, um Spark zu konfigurieren
Eines der nützlichsten Sparkmagic commands ist der %%configure
Befehl, der die Parameter für die Sitzungserstellung konfiguriert. Mithilfe von conf
-Einstellungen können Sie jede Spark-Konfiguration konfigurieren, die in der Konfigurationsdokumentation für Apache Spark
Beispiel Fügen Sie externe JAR Dateien aus dem Maven-Repository oder Amazon S3 zu EMR Notebooks hinzu
Sie können den folgenden Ansatz verwenden, um jedem Spark-bezogenen Kernel, der von unterstützt wird, eine externe JAR Dateiabhängigkeit hinzuzufügen 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://
DOC-EXAMPLE-BUCKET
/my-jar.jar" } }
Beispiel : Konfigurieren von Hudi
Sie können den Notizbuch-Editor verwenden, um Ihr EMR Notizbuch für die Verwendung von Hudi zu konfigurieren.
%%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" } }
%%sh
verwenden, um spark-submit
auszuführen
Die %%sh
magic führt Shell-Befehle in einem Unterprozess auf einer Instanz Ihres verbundenen Clusters aus. In der Regel würden Sie einen der Spark-bezogenen Kernel verwenden, um Spark-Anwendungen auf Ihrem angeschlossenen Cluster auszuführen. Wenn Sie jedoch einen Python-Kernel verwenden möchten, um eine Spark-Anwendung einzureichen, können Sie Folgendes verwenden magicund ersetzt den Bucket-Namen durch Ihren Bucket-Namen in Kleinbuchstaben.
%%sh spark-submit --master yarn --deploy-mode cluster s3://
DOC-EXAMPLE-BUCKET
/test.py
In diesem Beispiel benötigt der Cluster Zugriff auf den Speicherort von s3://
, andernfalls schlägt der Befehl fehl.DOC-EXAMPLE-BUCKET
/test.py
Sie können jeden Linux-Befehl mit dem %%sh
magic. Wenn Sie Spark oder YARN Befehle ausführen möchten, verwenden Sie eine der folgenden Optionen, um einen emr-notebook
Hadoop-Benutzer zu erstellen und dem Benutzer Berechtigungen zur Ausführung der Befehle zu gewähren:
-
Sie können einen neuen Benutzer explizit erstellen, indem Sie die folgenden Befehle ausführen.
hadoop fs -mkdir /user/emr-notebook hadoop fs -chown emr-notebook /user/emr-notebook
-
Sie können den Benutzerwechsel in Livy aktivieren, wodurch der Benutzer automatisch erstellt wird. Weitere Informationen finden Sie unter Aktivieren des Identitätswechsels zur Überwachung von Spark-Benutzer- und -Aufgabenaktivitäten.
Wird zur Visualisierung von %%display
-Spark-Datenrahmen verwendet
Sie können den %%display
magic um einen Spark-Datenrahmen zu visualisieren. Um das zu benutzen magic, führen Sie den folgenden Befehl aus.
%%display df
Wählen Sie, ob Sie die Ergebnisse in einem Tabellenformat anzeigen möchten, wie das folgende Bild zeigt.
Sie können sich auch dafür entscheiden, Ihre Daten mit fünf Arten von Diagrammen zu visualisieren. Zu Ihren Optionen gehören Kreis-, Streu-, Linien-, Flächen- und Balkendiagramme.
Verwenden Sie EMR Notizbücher magicS
Amazon EMR bietet die folgenden EMR Notebooks magics, die Sie mit Python3- und Spark-basierten Kerneln verwenden können:
-
%mount_workspace_dir
– Hängt Ihr Workspace-Verzeichnis in Ihren Cluster ein, sodass Sie Code aus anderen Dateien in Ihrem Workspace importieren und ausführen könnenAnmerkung
Mit
%mount_workspace_dir
kann nur der Python-3-Kernel auf Ihre lokalen Dateisysteme zugreifen. Spark-Executoren haben mit diesem Kernel keinen Zugriff auf das bereitgestellte Verzeichnis. -
%umount_workspace_dir
– Hängt Ihr Workspace-Verzeichnis von Ihrem Cluster ab -
%generate_s3_download_url
– Generiert einen temporären Download-Link in Ihrer Notebook-Ausgabe für ein Amazon-S3-Objekt
Voraussetzungen
Bevor EMR Sie Notebooks installieren magics, führen Sie die folgenden Aufgaben aus:
-
Stellen Sie sicher, dass Servicerolle für EC2 Cluster-Instances (EC2Instance-Profil) Lesezugriff für Amazon S3 hat. Die
EMR_EC2_DefaultRole
mit derAmazonElasticMapReduceforEC2Role
verwalteten Richtlinie erfüllt diese Anforderung. Wenn Sie eine benutzerdefinierte Rolle oder Richtlinie verwenden, stellen Sie sicher, dass sie über die erforderlichen S3-Berechtigungen verfügt.Anmerkung
EMRNotizbücher magics wird auf einem Cluster als Notebook-Benutzer ausgeführt und verwendet das EC2 Instance-Profil, um mit Amazon S3 zu interagieren. Wenn Sie ein Workspace-Verzeichnis auf einem EMR Cluster bereitstellen, können alle Workspaces und EMR Notebooks, die berechtigt sind, eine Verbindung zu diesem Cluster herzustellen, auf das bereitgestellte Verzeichnis zugreifen.
Verzeichnisse werden standardmäßig schreibgeschützt bereitgestellt. Während
s3fs-fuse
undgoofys
Lese-/Schreibzugriffe ermöglichen, empfehlen wir dringend, die Bereitstellungsparameter nicht zu ändern, um Verzeichnisse im Lese-/Schreibmodus bereitzustellen. Wenn Sie Schreibzugriff zulassen, werden alle am Verzeichnis vorgenommenen Änderungen in den S3-Bucket geschrieben. Um ein versehentliches Löschen oder Überschreiben zu vermeiden, können Sie die Versionsverwaltung für Ihren S3-Bucket aktivieren. Weitere Informationen finden Sie unter Verwenden der Versionsverwaltung in S3-Buckets. -
Führen Sie eines der folgenden Skripts auf Ihrem Cluster aus, um die Abhängigkeiten für EMR Notebooks zu installieren magic-Geräte. Um ein Skript auszuführen, können Sie Benutzerdefinierte Bootstrap-Aktionen verwenden entweder den Anweisungen unter Befehle und Skripte auf einem EMR Amazon-Cluster ausführen folgen, wenn Sie bereits über einen laufenden Cluster verfügen.
Sie können wählen, welche Abhängigkeit installiert werden soll. Sowohl s3fs-fuse
als auch goofys sind Tools FUSE (Filesystem in Userspace), mit denen Sie einen Amazon S3 S3-Bucket als lokales Dateisystem auf einem Cluster mounten können. Das Tool bietet eine ähnliche Benutzererfahrung wie. s3fs
POSIX Dasgoofys
Tool ist eine gute Wahl, wenn Sie Leistung einem POSIX -konformen Dateisystem vorziehen.Die Amazon EMR 7.x-Serie verwendet Amazon Linux 2023, das keine EPEL Repositorys unterstützt. Wenn Sie Amazon EMR 7.x verwenden, folgen Sie zur Installation den GitHubs3fs-fuse-Anweisungen
. s3fs-fuse
Wenn Sie die Serien 5.x oder 6.x verwenden, verwenden Sie zur Installation die folgenden Befehle.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
ODER
#!/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
Installieren Sie Notebooks EMR magicS
Anmerkung
Mit den EMR Amazon-Versionen 6.0 bis 6.9.0 und 5.0 bis 5.36.0 werden nur die emr-notebooks-magics
Paketversionen 0.2.0 und höher unterstützt %mount_workspace_dir
magic.
Gehen Sie wie folgt vor, um Notebooks zu installieren EMR magic-Geräte.
-
Führen Sie in Ihrem Notebook die folgenden Befehle aus, um das
emr-notebooks-magics
-Paket zu installieren. %pip install boto3 --upgrade %pip install botocore --upgrade %pip install emr-notebooks-magics --upgrade
-
Starten Sie Ihren Kernel neu, um die EMR Notebooks zu laden magic-Geräte.
-
Überprüfen Sie Ihre Installation mit dem folgenden Befehl, der den Ausgabehilfetext für
%mount_workspace_dir
anzeigen sollte.%mount_workspace_dir?
Ein Workspace-Verzeichnis mit %mount_workspace_dir
mounten
Die %mount_workspace_dir
magic ermöglicht es Ihnen, Ihr Workspace-Verzeichnis auf Ihrem EMR Cluster zu mounten, sodass Sie andere in Ihrem Verzeichnis gespeicherte Dateien, Module oder Pakete importieren und ausführen können.
Das folgende Beispiel mountet das gesamte Workspace-Verzeichnis auf einem Cluster und spezifiziert das optionale
Argument, um Goofys zum Mounten des Verzeichnisses zu verwenden.<--fuse-type>
%mount_workspace_dir .
<--fuse-type goofys>
Um zu überprüfen, ob Ihr Workspace-Verzeichnis eingehängt ist, verwenden Sie das folgende Beispiel, um das aktuelle Arbeitsverzeichnis mit dem ls
-Befehl anzuzeigen. Die Ausgabe sollte alle Dateien in Ihrem Workspace anzeigen.
%%sh ls
Wenn Sie mit den Änderungen in Ihrem Workspace fertig sind, können Sie das Workspace-Verzeichnis mit dem folgenden Befehl unmounten:
Anmerkung
Ihr Workspace-Verzeichnis bleibt in Ihrem Cluster eingebunden, auch wenn der Workspace gestoppt oder getrennt wird. Sie müssen Ihr Workspace-Verzeichnis explizit unmounten.
%umount_workspace_dir
Herunterladen eines Amazon-S3-Objekts mit %generate_s3_download_url
Der generate_s3_download_url
Befehl erstellt ein vorsigniertes Objekt URL für ein in Amazon S3 gespeichertes Objekt. Sie können das Presigned verwendenURL, um das Objekt auf Ihren lokalen Computer herunterzuladen. Sie könnten beispielsweise ausführen, generate_s3_download_url
um das Ergebnis einer SQL Abfrage herunterzuladen, die Ihr Code in Amazon S3 schreibt.
Das vorsignierte URL ist standardmäßig 60 Minuten gültig. Sie können die Ablaufzeit ändern, indem Sie eine Anzahl von Sekunden für das --expires-in
-Kennzeichen angeben. --expires-in 1800
Erstellt beispielsweise eine, URL die 30 Minuten gültig ist.
Das folgende Beispiel generiert einen Download-Link für ein Objekt, indem der vollständige Amazon-S3-Pfad angegeben wird:
.s3://EXAMPLE-DOC-BUCKET/path/to/my/object
%generate_s3_download_url
s3://EXAMPLE-DOC-BUCKET/path/to/my/object
Um mehr über die Verwendung von generate_s3_download_url
zu erfahren, führen Sie den folgenden Befehl aus, um den Hilfetext anzuzeigen.
%generate_s3_download_url?
Führen Sie ein Notebook im Headless-Modus mit %execute_notebook
Mit %execute_notebook
magic, können Sie ein anderes Notizbuch im Headless-Modus ausführen und sich die Ausgabe für jede Zelle ansehen, die Sie ausgeführt haben. Dieser magic erfordert zusätzliche Berechtigungen für die Instance-Rolle, die Amazon EMR und Amazon EC2 gemeinsam nutzen. Führen Sie den %execute_notebook?
-Befehl aus, um weitere Informationen zur Gewährung zusätzlicher Berechtigungen zu erhalten.
Während eines Auftrags mit langer Laufzeit wechselt Ihr System möglicherweise aufgrund von Inaktivität in den Standbymodus oder verliert vorübergehend die Internetverbindung. Dadurch könnte die Verbindung zwischen Ihrem Browser und dem Jupyter Server unterbrochen werden. In diesem Fall verlieren Sie möglicherweise die Ausgabe der Zellen, die Sie vom Jupyter Server ausgeführt und gesendet haben.
Wenn Sie das Notebook im Headless-Modus mit ausführen %execute_notebook
magic, EMR Notebooks erfasst die Leistung der Zellen, die bereits in Betrieb sind, auch wenn das lokale Netzwerk unterbrochen wird. EMRNotebooks speichert die Ausgabe inkrementell in einem neuen Notizbuch mit demselben Namen wie das Notizbuch, das Sie ausgeführt haben. EMRNotebooks platziert das Notizbuch dann in einem neuen Ordner innerhalb des Arbeitsbereichs. Headless-Läufe finden auf demselben Cluster statt und verwenden die Servicerolle EMR_Notebook_DefaultRole
, aber zusätzliche Argumente können die Standardwerte ändern.
Verwenden Sie den folgenden Befehl, um ein Notebook im Headless-Modus auszuführen:
%execute_notebook
<relative-file-path>
Verwenden Sie den folgenden Befehl, um eine Cluster-ID und eine Servicerolle für einen Headless-Lauf anzugeben:
%execute_notebook
<notebook_name>
.ipynb --cluster-id <emr-cluster-id> --service-role <emr-notebook-service-role>
Wenn Amazon EMR und Amazon sich eine Instance-Rolle EC2 teilen, sind für die Rolle die folgenden zusätzlichen Berechtigungen erforderlich:
{ "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" } ] }
Anmerkung
Um %execute_notebook
zu verwenden magic, installieren Sie das emr-notebooks-magics
Paket, Version 0.2.3 oder höher.