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