

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 Kernel mit magic Befehlen in EMR Studio
<a name="emr-studio-magics"></a>

## -Übersicht
<a name="overview-magics"></a>

EMR Studio und EMR Notebooks unterstützen magic Befehle. *Magic*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 EMR unterstützt auch ein PaketSparkmagic, das Spark-bezogene Kernel (PySparkSparkR- und Scala-Kernel) mit spezifischen magic Befehlen bereitstellt und Livy auf dem Cluster verwendet, um Spark-Jobs zu senden.

Sie können magic-Befehle verwenden, solange Sie einen Python-Kernel in Ihrem EMR-Notebook haben. In ähnlicher Weise unterstützt jeder Spark-bezogene Kernel Sparkmagic-Befehle.

Magic-Befehle, auch *magic* genannt, gibt es in zwei Varianten:
+ **Zeile magic** – Diese magic-Befehle werden durch ein einzelnes `%`-Präfix gekennzeichnet und funktionieren in einer einzigen Codezeile
+ **Zelle magic** – Diese magic-Befehle sind mit einem doppelten `%%`-Präfix gekennzeichnet und funktionieren auf mehreren Codezeilen

Alle verfügbaren magic finden Sie unter [Liste der magic- und Sparkmagic-Befehle](#accessing-all-magic-commands).

## Überlegungen und Einschränkungen
<a name="considerations-limitations-magics"></a>
+ EMR Serverless unterstützt die `%%sh`-Ausführung von `spark-submit` nicht. Die EMR Notebooks magic werden nicht unterstützt.
+ Amazon EMR in EKS-Cluster unterstützten keine Sparkmagic-Befehle für EMR Studio. Das liegt daran, dass Spark-Kernel, die Sie mit verwalteten Endpunkten verwenden, in Kubernetes integriert sind und von Sparkmagic und Livy nicht unterstützt werden. Sie können die Spark-Konfiguration als Workaround direkt im SparkContext Objekt festlegen, wie das folgende Beispiel zeigt.

  ```
  spark.conf.set("spark.driver.maxResultSize", '6g') 
  ```
+ Die folgenden 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`

## Liste der magic- und Sparkmagic-Befehle
<a name="accessing-all-magic-commands"></a>

Verwenden Sie die folgenden Befehle, um die verfügbaren magic-Befehle aufzulisten:
+ `%lsmagic` listet alle derzeit verfügbaren magic-Funktionen auf.
+ `%%help` listet die derzeit verfügbaren SPARK-bezogenen magic-Funktionen auf, die vom Sparkmagic-Paket bereitgestellt werden.

## `%%configure` wird verwendet, um Spark zu konfigurieren
<a name="using-configure-sparkmagic"></a>

Einer der nützlichsten Sparkmagic-Befehle 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](https://spark.apache.org/docs/latest/configuration.html) erwähnt wird.

**Example Fügen Sie eine externe JAR-Datei 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 Sparkmagic unterstützt wird, eine Abhängigkeit von einer externen JAR-Datei hinzuzufügen.  

```
%%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"
    }
}
```

**Example : Konfigurieren von Hudi**  
Anschließend verwenden Sie den Notebook-Editor, um Ihr EMR Notebook 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
<a name="using-sh-sparkmagic"></a>

Der `%%sh` magic führt Shell-Befehle in einem Unterprozess auf einer Instance 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 magic verwenden und den Bucket-Namen durch Ihren Bucket-Namen in Kleinbuchstaben ersetzen.

```
%%sh
spark-submit --master yarn --deploy-mode cluster s3://{{amzn-s3-demo-bucket}}/test.py
```

In diesem Beispiel benötigt der Cluster Zugriff auf den Speicherort von `s3://{{amzn-s3-demo-bucket}}/test.py`, andernfalls schlägt der Befehl fehl.

Sie können jeden Linux-Befehl mit `%%sh` magic verwenden. 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](emr-managed-notebooks-spark-monitor.md).

## Wird zur Visualisierung von `%%display`-Spark-Datenrahmen verwendet
<a name="using-display-sparkmagic"></a>

Sie können den verwenden, um einen `%%display`-magic-Spark-Datenrahmen zu visualisieren. Um diese magic zu verwenden, 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.

![Ausgabe mit dem %%-Display magic, das die Ergebnisse in einem Tabellenformat anzeigt.](http://docs.aws.amazon.com/de_de/emr/latest/ManagementGuide/images/magic-display-table.png)


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.

![Ausgabe mit dem %%-Display magic, das die Ergebnisse in einem Diagrammformat anzeigt.](http://docs.aws.amazon.com/de_de/emr/latest/ManagementGuide/images/magic-display-chart.png)


## Verwenden von EMR Notebooks magic
<a name="emr-magics"></a>

Amazon EMR bietet die folgenden EMR Notebooks magic, 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önnen
**Anmerkung**  
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
<a name="emr-magics-prereqs"></a>

Bevor Sie EMR Notebooks magic installieren, führen Sie die folgenden Schritte aus:
+ Stellen Sie sicher, dass [Servicerolle für EC2-Cluster-Instances (EC2-Instance-Profil)](emr-iam-role-for-ec2.md) Lesezugriff für Amazon S3 hat. Die `EMR_EC2_DefaultRole` mit der `AmazonElasticMapReduceforEC2Role` 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**  
EMR Notebooks magic werden auf einem Cluster als Notebook-Benutzer ausgeführt und verwenden das EC2-Instance-Profil, um mit Amazon S3 zu interagieren. Wenn Sie ein Workspace-Verzeichnis auf einem EMR-Cluster mounten, 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` und `goofys` 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html).
+ Führen Sie eines der folgenden Skripts auf Ihrem Cluster aus, um die Abhängigkeiten für EMR Notebooks magic zu installieren. Um ein Skript auszuführen, können Sie [Benutzerdefinierte Bootstrap-Aktionen verwenden](emr-plan-bootstrap.md#bootstrapCustom) entweder den Anweisungen unter [Befehle und Skripts auf einem Amazon-EMR-Cluster ausführen](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-commandrunner.html) folgen, wenn Sie bereits über einen laufenden Cluster verfügen.

  Sie können wählen, welche Abhängigkeit installiert werden soll. Sowohl [s3fs-fuse](https://github.com/s3fs-fuse/s3fs-fuse) als auch [goofys sind FUSE-Tools](https://github.com/kahing/goofys) (Filesystem in Userspace), mit denen Sie einen Amazon-S3-Bucket als lokales Dateisystem auf einem Cluster mounten können. Das `s3fs`-Tool bietet eine ähnliche Benutzererfahrung wie POSIX. Das `goofys`-Tool ist eine gute Wahl, wenn Sie Leistung einem POSIX-kompatiblen Dateisystem vorziehen.

  Die Amazon EMR 7.x-Serie verwendet Amazon Linux 2023, das keine EPEL-Repositorys unterstützt. Wenn Sie Amazon EMR 7.x ausführen, folgen Sie zur Installation den [ GitHubs3fs-fuse-Anweisungen](https://github.com/s3fs-fuse/s3fs-fuse/blob/master/COMPILATION.md). `s3fs-fuse` Wenn Sie die Serie 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 EMR Notebooks magic
<a name="emr-magics-install"></a>

**Anmerkung**  
Bei den Amazon-EMR-Versionen 6.0 bis 6.9.0 und 5.0 bis 5.36.0 unterstützen nur die `emr-notebooks-magics`-Paketversionen 0.2.0 und höher `%mount_workspace_dir` magic.

Führen Sie die folgenden Schritte aus, um EMR Notebooks magic zu installieren.

1. Führen Sie in Ihrem Notebook die folgenden Befehle aus, um das [https://pypi.org/project/emr-notebooks-magics/](https://pypi.org/project/emr-notebooks-magics/)-Paket zu installieren.

   ```
   %pip install boto3 --upgrade
   %pip install botocore --upgrade
   %pip install emr-notebooks-magics --upgrade
   ```

1. Starten Sie Ihren Kernel neu, um die EMR Notebooks magic zu laden.

1. Ü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
<a name="emr-magics-mount-workspace"></a>

Mit `%mount_workspace_dir` magic können Sie Ihr Workspace-Verzeichnis auf Ihrem EMR-Cluster mounten, sodass Sie andere in Ihrem Verzeichnis gespeicherte Dateien, Module oder Pakete importieren und ausführen können.

Im folgenden Beispiel wird das gesamte Workspace-Verzeichnis auf einem Cluster bereitgestellt und das optionale {{`<--fuse-type>`}}-Argument angegeben, Goofys für das Mounten des Verzeichnisses zu verwenden.

```
%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`
<a name="emr-magics-generate-s3-download-url"></a>

Der `generate_s3_download_url`-Befehl erstellt eine vorsignierte URL für ein in Amazon S3 gespeichertes Objekt. Sie können die vorsignierte URL verwenden, um das Objekt auf Ihren lokalen Computer herunterzuladen. Sie könnten beispielsweise `generate_s3_download_url` ausführen, um das Ergebnis einer SQL-Abfrage herunterzuladen, die Ihr Code in Amazon S3 schreibt.

Die vorsignierte URL ist standardmäßig 60 Minuten lang 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`
<a name="headless-execution"></a>

Mit `%execute_notebook` magic können Sie ein anderes Notebook im Headless-Modus ausführen und die Ausgabe für jede Zelle anzeigen, die Sie ausgeführt haben. Diese 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 `%execute_notebook` magic betreiben, erfasst EMR Notebooks die Ausgabe von den Zellen, die laufen, auch wenn das lokale Netzwerk unterbrochen wird. EMR Notebooks speichert die Ausgabe inkrementell in einem neuen Notebook mit demselben Namen wie das Notebook, das Sie ausgeführt haben. EMR Notebooks platziert das Notebook dann in einem neuen Ordner innerhalb des Workspace. 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 EC2 eine Instance-Rolle gemeinsam nutzen, erfordert die Rolle die folgenden zusätzlichen Berechtigungen:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:StartNotebookExecution",
        "elasticmapreduce:DescribeNotebookExecution",
        "ec2:DescribeInstances"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowELASTICMAPREDUCEStartnotebookexecution"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/EMR_Notebooks_DefaultRole"
      ],
      "Sid": "AllowIAMPassrole"
    }
  ]
}
```

------

**Anmerkung**  
Um `%execute_notebook` magic zu verwenden, installieren Sie das `emr-notebooks-magics`-Paket, Version 0.2.3 oder höher.