Wie kann ich die Spark-Konfiguration in einem Amazon EMR-Notebook ändern?

Lesedauer: 2 Minute
0

Wie kann ich die Konfiguration eines Apache-Spark-Jobs in einem Amazon EMR-Notebook anpassen?

Kurzbeschreibung

Ein Amazon EMR-Notebook ist ein serverloses Jupyter-Notebook. Ein Jupyter-Notebook verwendet den Sparkmagic-Kernel als Client für die interaktive Arbeit mit Spark in einem Remote-EMR-Cluster über einen Apache Livy-Server. Sie können Sparkmagic-Befehle verwenden, um die Spark-Konfiguration anzupassen. Eine benutzerdefinierte Konfiguration ist nützlich, wenn Sie Folgendes tun möchten:

  • Ändern des Executor-Speichers und der Executor-Cores für einen Spark-Job
  • Ressourcenzuweisung für Spark ändern

Behebung

Ändern Sie die aktuelle Sitzung

1.Führen Sie in einer Jupyter-Notebook-Zelle den Befehl %%configure aus, um die Job-Konfiguration zu ändern. Im folgenden Beispiel ändert der Befehl den Speicher des Executors für den Spark-Job.

%%configure -f
{"executorMemory":"4G"}

2.Für zusätzliche Konfigurationen, die Sie normalerweise mit der Option --conf übergeben, verwenden Sie ein verschachteltes JSON-Objekt, wie im folgenden Beispiel gezeigt. Verwenden Sie diese Methode, anstatt explizit ein conf-Objekt an einen SparkContext oder eine SparkSession zu übergeben.

%%configure -f
{"conf":{"spark.dynamicAllocation.enabled":"false"}}

Bestätigen Sie, dass die Konfigurationsänderung erfolgreich war

1.Führen Sie auf der Clientseite den Befehl %%info auf Jupyter aus, um die aktuelle Sitzungskonfiguration zu sehen. Beispiel für eine Ausgabe:

Current session configs: {'executorMemory': '4G', 'conf': {'spark.dynamicAllocation.enabled': 'false'}, 'kind': 'pyspark'}

2.Auf der Serverseite überprüfen Sie das Protokoll /var/log/livy/livy-livy-server.out log auf dem EMR-Cluster. Wenn eine SparkSession gestartet wurde, sollten Sie einen Protokolleintrag wie diesen sehen:

20/06/24 10:11:22 INFO InteractiveSession$: Creating Interactive session 2: [owner: null, request: [kind: pyspark, proxyUser: None, executorMemory: 4G, conf: spark.dynamicAllocation.enabled -> false, heartbeatTimeoutInSecond: 0]]

Weitere Informationen

Apache Livy - REST - API

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren